Perl的习惯很难改掉。变量声明、作用域、全局/局部在两种语言之间是不同的。有没有一组推荐的python语言习惯用法,可以使从perl编码到python编码的过渡不那么痛苦。
细微的变量拼写错误会浪费大量的时间。
我知道变量声明的问题在python爱好者中是半宗教的,我不是在争论语言的改变或特性,只是在两种语言之间的一个可靠的桥梁,不会导致我的perl习惯破坏我的python努力。
谢谢。
发布于 2009-09-29 06:42:15
将Python类拆分到单独的文件中(就像在Java中,每个文件一个类)有助于发现作用域问题,尽管这不是惯用的python (也就是说,不是python)。
在很多perl之后,我一直在编写python,并发现tchrist中的这段代码很有用,尽管它很旧:
http://linuxmafia.com/faq/Devtools/python-to-perl-conversions.html
在我的perl->python转换中,习惯于不使用perl最优秀的变量作用域一直是第二个最困难的问题。如果您有很多perl: CPAN,那么第一个问题是显而易见的。
发布于 2009-09-28 21:36:17
我喜欢这个问题,但是我没有任何Perl的经验,所以我不知道如何给您最好的建议。
我建议你在谷歌上搜索一下"Python惯用法“。你会发现一些宝石。特别是:
http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html
http://docs.python.org/dev/howto/doanddont.html
http://jaynes.colorado.edu/PythonIdioms.html
至于变量“声明”的问题,这是我给你的最好的建议:
请记住,在Python中,对象有自己的生命周期,独立于变量名。变量名是绑定到对象的标记。在任何时候,您都可以将名称重新绑定到不同的对象,可能是完全不同类型的对象。因此,这是完全合法的:
x = 1 # bind x to integer, value == 1
x = "1" # bind x to string, value is "1"Python实际上是强类型的;如果你不相信我的话,试着执行代码1+ "1“,看看它是如何工作的。在没有显式类型强制的情况下,值为1的整数对象不接受字符串值的加法。因此,Python名称永远不会使用符号字符来标记变量的属性;这不是Python做事情的方式。任何合法的标识符名称都可以绑定到任何类型的Python对象。
发布于 2009-09-28 22:11:48
在python中,除了python shell之外,$_是不存在的,并且全局范围的变量是不受欢迎的。
在实践中,这有两个主要影响:
然而,当考虑到在Python中,几乎所有东西都变成一个类时,这些差异就相当小了。当我使用Perl时,我想到了“雕刻”;在Python中,我感觉自己是在“组合”。
Python没有Perl那么丰富的习惯用法,我认为尝试进行转换可能是错误的。
https://stackoverflow.com/questions/1489355
复制相似问题