Perl程序员的Python入门

58

我是一位有丰富Perl开发经验的开发者,同时也了解或熟悉其他编程语言(有C/C++的工作经验,Java和Scheme的学校经验,并对许多其他语言有所了解)。

我可能需要使用Python进行一些网络开发工作(最紧急的是与Google App Engine相关的工作)。因此,我想向SO求助,寻求如何最好地学习Python的参考资料,特别是对于那些来自Perl背景的人(例如,重点将放在两者之间的区别以及如何将Perl独特的用法转换为Python惯用法,而不是泛泛而谈的Python参考资料)。如果有针对Web开发的内容更好。

我会接受任何形式的资料-文章、教程、书籍、样例应用程序?

谢谢!


1
http://www.python.org/doc/2.5.4/tut/tut.html - Hamish Grubijan
7个回答

72

最近,出于工作原因,我也不得不进行类似的转换,这真的很痛苦。Python与Perl有非常不同的哲学和工作方式,习惯于这一点可能会令人沮丧。我发现最有用的东西是:

  • 快速了解单元测试。没有使用use strict,你会感到无助,并且会犯许多初级错误,这些错误将作为运行时错误出现。我建议使用nose框架而不是核心安装包中附带的unittest框架。如果你习惯于Test::More,那么unittest非常冗长。
  • 在Stack Overflow上查看Python相关问题。特别是Python - Things one MUST avoidPython 2.x gotcha’s and landmines值得一读。
  • 个人认为Dive Into Python令人恼火和傲慢,但它可以免费在线获取,所以您可以自行判断。


    1
    你能解释一下“不同的哲学和工作方式”吗? - JoelFan

    16

    9
    作为一名Perl程序员,我可以说的是不要购买O'Reilly的“学习Python”。它远远不如“学习Perl”好,并且我不知道有任何与Larry Wall的“Programming Perl”相当的东西,后者是无可比拟的. 我最成功的经验是将以前的Perl程序转换成Python,尽可能地利用许多新技术。

    4
    请查看官方教程,其实非常好。如果您对Web开发感兴趣,您应该准备好立即跳转到您将使用的Web框架的文档;Python有许多可供选择的框架,其中zope、cherrypy、pylons和werkzeug都有良好的声誉。
    我不会尝试寻找专门帮助您从Perl过渡的内容,因为这些可能不像对更多人有用的参考资料那样高质量。

    3

    这个是你真正应该去的网站。有一个名为入门指南的部分,你应该看一下。还有书籍推荐。此外,你可能也会对这个关于“惯用语”的内容感兴趣。


    2

    -4

    如果你已经掌握了其他编程语言,我不建议你过于比较Perl和Python来学习Python。如果你对面向对象/函数式编程方面不熟悉,只是想像在Perl中一样进行过程化编程,那么先学习Python的语言结构/语法,然后做几个例子。如果你正在转向面向对象或函数式编程范式,我建议你先阅读面向对象基础知识,然后再开始学习Python语法和例子...这样你就有了一种心理蓝图,知道如何构建东西,然后再开始实际操作。这只是我的个人意见。


    15
    嘘,现代 Perl 开发者和其他人一样经常使用面向对象编程。而且,像往常一样,TMTOWTDI(There's More Than One Way To Do It)。;) - Robert P
    14
    @jellyfishtree - 我会尽力不生气,但是你那个假设有点过分了。我用Perl(以及C++)编写完全面向对象的代码——我说过我是一名经验丰富的Perl开发人员,而不是一名脚本猴子——此外,我也可以进行函数式编程,尽管经验/质量远远不如面向对象编程 :) - DVK
    4
    Perl和Python的面向对象系统非常相似 - Perl的面向对象系统是从Python复制而来的。 - Alexandr Ciornii
    2
    Robert P:也不算现代——面向对象编程在 Perl 中早已出现。 - Alexandr Ciornii
    啊,糟糕..我忘了。Perl包对吧?无意冒犯,只是太习惯人们将其用于过程脚本,以至于忘记了其他可能性。 - jellyfishtree

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接