Perl的习惯很难。变量声明,作用域,全局/本地在两种语言之间是不同的。是否有一组推荐的python语言习语,它们将使从perl编码到python编码的过渡变得不那么痛苦。
微妙的变量拼写错误会浪费大量时间。
我理解变量声明问题在python人中是准宗教的 我不是在争论语言的变化或功能,只是一种可靠的桥梁 这两种语言不会导致我的perl习惯陷入我的python努力。
感谢。
答案 0 :(得分:2)
将Python类拆分为单独的文件(比如Java,每个文件一个类)有助于找到范围问题,尽管这不是惯用的python(即不是pythonic)。
我经过多次perl编写python后发现这很有用,即使它很老了:
http://linuxmafia.com/faq/Devtools/python-to-perl-conversions.html
在没有perl最优秀的变量范围的情况下习惯这样做是我的perl-> python过渡的第二个最难的问题。如果你有很多perl,第一个是显而易见的:CPAN。
答案 1 :(得分:1)
我喜欢这个问题,但我没有任何Perl经验,所以我不确定如何最好地建议你。
我建议您在Google上搜索“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名称永远不会有标记变量属性的sigil字符;这不是Python如何做的事情。任何合法标识符名称都可以绑定到任何类型的任何Python对象。
答案 2 :(得分:1)
在python $ _中不存在,除了在python shell中,并且全局范围的变量都不受欢迎。
在实践中,这有两个主要影响:
然而,当人们认为在Python中几乎所有东西都变成了一个类时,这些差异相当小。当我以前做Perl时,我想到了“雕刻”;在Python中,我觉得我在“作曲”。
Python没有Perl的惯用功能,我认为尝试翻译可能是错误的。
答案 3 :(得分:1)
阅读,理解,关注并热爱 PEP 8 ,其中详细介绍了有关Python的所有的样式指南。
说真的,如果你想知道Python推荐的习惯用语和习惯,那就是源代码。
答案 4 :(得分:0)
不要错误输入您的变量名称。认真。使用简短,易于描述的,在本地使用它们,而不是依赖于全局范围。
如果你正在做一个没有得到很好服务的大型项目,请使用pylint,unit tests和coverage.py来确保你的代码符合预期。
从其中一个other threads:
的评论中复制“'strict vars'主要是为了阻止错误的引用和错过'我的'来创建偶然的全局变量(以及Perl术语中的包变量)。这在Python中不会发生,因为裸分配默认为本地声明,裸露的未分配符号会导致异常。“