学习Python对于.NET开发者来说

23

我已经使用C#进行了几年的积极开发。 我主要在.NET平台上构建企业应用程序和内部框架。

除了C#之外,我从未需要使用任何其他主流高级语言来完成我的任务,因为.NET是我们使用的标准平台。

有一些遗留的Python应用程序需要我提供支持,但我对Python和动态语言没有接触过(尽管我做了一些JavaScript)。

我希望得到一些指导/建议,以帮助学习像Python这样的静态类型思维所需要的语言。

编辑:IronPython不是选项!


重复:http://stackoverflow.com/questions/934937/简洁的Python书籍推荐,http://stackoverflow.com/questions/111857/您是如何自学Python编程的,http://stackoverflow.com/questions/686301/购买哪本Python书,http://stackoverflow.com/questions/34570/有哪些最佳的Python速读书籍等。 - S.Lott
8个回答

22
Foord和Muirhead的IronPython in Action是一本非常好的书,非常适合教授Python给.NET人员以及教授.NET给Python人员。我可能有偏见,因为我是技术审查员,而Foord是我的朋友,但是在过去,我也遇到过其他情况,其中一个朋友写了一本书,我进行了技术审查,最终决定这本书是错误的,并公开表态(这样会失去朋友,但是至少在涉及Python时,我不能说谎!-)

编辑:如果你不能转向IronPython(顺便说一句,它可能会很好地支持你的遗留应用程序),还有更好的答案:Mark Pilgrim的Dive into Python通常被认为是面向有经验的开发人员的最佳Python入门书籍,而我自己的Python in a Nutshell则被誉为超级开发人员上手最快的方式。当然,我对这些有偏见——Mark是我的同事,我的妻子是他的书的主要技术编辑(也是我的),而且显然我也对自己的书有偏见;-)。但是,我倾向于很多最好的Python书籍,因为我或者参与了它们的编辑,或者是它们的作者的朋友,或者两者兼而有之;-)。


1
这本书的重点是使用Python针对.NET框架吗?如果是这样,那么这不是我想要的,因为我需要支持用Python编写的遗留应用程序。 - Abhijeet Patel
如果你被禁止使用IronPython(顺便说一句,它可能很好地支持你的旧应用程序),那么还有更好的解决方案,让我编辑我的答案来提及它们。 - Alex Martelli
Alex:IronPython 2.0.1是否能够与Visual Studio集成,即在VS中能否创建和打开IronPython项目? - Abhijeet Patel
@Abhijeet,有几种可能性:最有前途的一种即是 http://ironpythonstudio.codeplex.com/ 这个成品解决方案 -- 如果想要更深入地了解,http://ironpython-urls.blogspot.com/2008/07/visual-studio-ironpython-integration.html 以及其中的链接也看起来不错。 - Alex Martelli
Alex:IronPython Studio看起来很有前途...我会试一下,还有其他的IDE推荐(非IRON Py)?我听说Eclipse的PyDev插件值得一试,你还有其他(免费)的推荐吗? - Abhijeet Patel
@Abhijeet,抱歉,我不是一个GUI IDE的人(个人喜欢vim和shell作为我的“IDE”;-))。我记得WingIDE拥有我曾经使用过的最好的调试器,毫无疑问-值得用于调试那些打败了我投入的其他调试器和我的可怜头脑的多线程应用程序中的微妙错误;-)-"但那是在另一个国家,而且那个应用程序已经死了";-)。 - Alex Martelli

8
使用Python时,我最难理解的是鸭子类型(Duck Typing)......起初,我认为它非常可怕,让我毛骨悚然。
其次是按约定的范围,但那很容易。空格的重要性也让我有些困惑。
然而,一旦你逐渐熟悉这种简洁、开发速度快的语言,你就会更加欣赏它。过了一段时间,我觉得这是发生在我身上的最好的事情!!:-)
以下是帮助我很多的几件事:
首先,我从book开始学习基础知识,对于日常使用,Python Quick Reference Card非常有帮助。此外,console将成为您尝试快速操作和巩固学习的最佳助手。

对于IDE,对于我来说,从eclipse世界PyDev是一个很自然的选择,但还有许多其他选择。但如果您更熟悉Visual Studio环境,则Python Tools for Visual Studio也非常不错。

祝好运,希望您像我一样喜欢Python。


4

掌握动态类型是一个巨大的难关。在看 Python 代码时,你会意识到变量没有被定义过,你只是凭空创建它们,这感觉像是跳下悬崖。在你的滑翔翼完全获得空气才能稳定前,会有一瞬间的惊恐。

之后需要时间来信任你新学到的动态翅膀,你可能只能通过飞行特技来摸索使用方法。了解 Python 如何处理引用,试图使用 Monkey-Patching 的方法,适应不同类型的变量。尝试学习一些技巧。

虽然你不能用 IronPython 来做这个,但你可以用它来学习 Python。


3

从C#转向Python这样的鸭子类型语言,你会经历相当大的文化冲击。缺少类型和智能感知可能会非常令人望而生畏。很幸运你有JavaScript的经验。此外,Python中基于缩进的块规则对于没有经验的人来说可能非常令人困惑(通常你要么喜欢它,要么讨厌它:-)

除此之外,从一种语言转向另一种语言的最大挑战通常是框架。了解所有类和函数需要时间。


3
对于有经验的开发人员学习Python,《Dive Into Python》是一本非常好的书。
Wesley Chun的《Core Python Programming》采用了更加基础的方法,可能对于有经验的开发人员来说有点慢。但它可以很容易地将基本语法和运算符与其他语言进行比较。Wesley的写作风格非常易读,他的示例项目足够有趣而不是琐碎的。 《Python Cookbook》是学习以“Pythonic”方式编程的绝佳参考。这本书包含数百个例子,展示了如何使用Python解决常见的日常问题。总的来说,“Cookbook”系列将比任何其他书籍更快地让您了解该语言的习惯用法。
每当我需要学习一门新的编程语言时,我会开始使用它来解决所有“日常维护”任务 - 所有那些我通常会用shell脚本或常见的unix工具来解决的小问题 - 我开始使用新语言来解决这些问题。由于您有.NET经验,IronPython可能是利用该知识学习Python的好方法。即使您只在个人沙盒中安装IronPython...并将其用于所有日常繁忙的工作编码任务 - 这可以是学习Python语法和习惯用法的好方法。

2
我建议使用IronPython来帮助你学习。它是在.NET框架上实现的Python。因此,你可以使用/学习Python并访问.NET类库。
一个很好的起点是下载IronPython并查看IronPython in Action,这是一本非常好的关于Python在.NET框架上的书籍。
编辑:由于IronPython不是一个选择,请忽略这个答案。谢谢。

2

2
我建议你阅读一本关于它的书,一本适合初学者的书。这本书会包含许多你已经知道的内容,但是你不会错过任何使用动态语言方面的东西。我可以向你指出Python深度之旅,看起来非常友好,或者Python教程,看起来很直接(这就是我学习的方式)。

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