Perl在Python环境中管理人的习惯

2024-04-27 10:06:48 发布

您现在位置:Python中文网/ 问答频道 /正文

Perl的习惯很难改变。变量声明、作用域、全局/局部在两种语言之间是不同的。有没有一套推荐的python语言习惯用法可以让从perl编码到python编码的转换变得不那么痛苦。在

细微的变量拼写错误会浪费大量的时间。在

我知道变量声明问题在python人中是准宗教的 我不是在争论语言的变化或特性,只是在两者之间建立一个可靠的桥梁 这两种语言不会使我的perl习惯落空于python。在

谢谢。在


Tags: 语言声明编码时间浪费局部特性全局
3条回答

我喜欢这个问题,但是我没有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名称从来没有标记变量属性的sigil字符;这不是Python的工作方式。任何合法的标识符名称都可以绑定到任何类型的Python对象。在

将Python类拆分为单独的文件(比如在Java中,每个文件一个类)有助于查找范围问题,尽管这不是惯用的Python(也就是说,不是Python)。在

我用了很多perl编写python,发现tchrist的这篇文章很有用,尽管它很旧:

http://linuxmafia.com/faq/Devtools/python-to-perl-conversions.html

在我的perl->;python转换过程中,第二个最困难的问题就是习惯于不使用perl最优秀的变量作用域。如果您有很多perl:CPAN,第一个很明显。在

在python中$不存在,除非在pythonshell中,并且不允许使用全局范围的变量。在

实际上,这有两个主要影响:

  1. 在Python中,不能像Perl那样自然地使用正则表达式,s0匹配每一个迭代的$∗并类似地捕捉匹配项则更麻烦
  2. Python函数倾向于显式调用或具有默认变量

然而,当考虑到在Python中几乎所有的东西都成为一个类时,这些差别就相当小了。当我以前做Perl时,我想到了“雕刻”;在Python中,我觉得我在“写作”。在

Python没有Perl那样丰富的惯用用法,我认为尝试进行翻译可能是个错误。在

相关问题 更多 >