首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python环境中管理Perl习惯

在Python环境中管理Perl习惯
EN

Stack Overflow用户
提问于 2009-09-28 21:02:52
回答 5查看 537关注 0票数 6

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

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

我知道变量声明的问题在python爱好者中是半宗教的,我不是在争论语言的改变或特性,只是在两种语言之间的一个可靠的桥梁,不会导致我的perl习惯破坏我的python努力。

谢谢。

EN

回答 5

Stack Overflow用户

发布于 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,那么第一个问题是显而易见的。

票数 2
EN

Stack Overflow用户

发布于 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中,对象有自己的生命周期,独立于变量名。变量名是绑定到对象的标记。在任何时候,您都可以将名称重新绑定到不同的对象,可能是完全不同类型的对象。因此,这是完全合法的:

代码语言:javascript
复制
x = 1    # bind x to integer, value == 1
x = "1"  # bind x to string, value is "1"

Python实际上是强类型的;如果你不相信我的话,试着执行代码1+ "1“,看看它是如何工作的。在没有显式类型强制的情况下,值为1的整数对象不接受字符串值的加法。因此,Python名称永远不会使用符号字符来标记变量的属性;这不是Python做事情的方式。任何合法的标识符名称都可以绑定到任何类型的Python对象。

票数 1
EN

Stack Overflow用户

发布于 2009-09-28 22:11:48

在python中,除了python shell之外,$_是不存在的,并且全局范围的变量是不受欢迎的。

在实践中,这有两个主要影响:

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

然而,当考虑到在Python中,几乎所有东西都变成一个类时,这些差异就相当小了。当我使用Perl时,我想到了“雕刻”;在Python中,我感觉自己是在“组合”。

Python没有Perl那么丰富的习惯用法,我认为尝试进行转换可能是错误的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1489355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档