22

几年来,我一直在积极地使用 C# 进行开发。我主要在 .NET 堆栈上构建企业应用程序和内部框架。

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

我被要求支持一些遗留的 Python 应用程序,我一般没有接触过 Python 和动态语言(尽管我已经完成了相当多的 JavaScript)。

我希望得到一些指导/建议,以帮助如何为静态类型的大脑学习像 python 这样的语言。

编辑:使用 IronPython 不是一种选择!

4

8 回答 8

21

Foord 和 Muirhead 的IronPython in Action是一本非常好的书,非常适合向 .NET 人员教授 Python 以及向 Python 人员教授 .NET。我可能有偏见,因为我是一名技术评论家,而 Foord 是我的朋友,但我过去也遇到过其他情况,一位朋友写了一本书,我对它进行了技术评论——最终决定这本书是错误的公开这么说(失去朋友的方式,但是,我不能说谎,至少不是 Python 所关心的地方!-)

编辑:如果您被禁止迁移到 IronPython(它可能会很好地支持您的旧应用程序,顺便说一句),有更好的答案:Mark Pilgrim 的Dive into Python通常被认为是经验丰富的开发人员和我自己的最佳 Python 介绍Python in a Nutshell被誉为超级明星开发人员最快的入门方式。我当然偏向于这些——马克是一位同事,的妻子是他的书(以及我自己的书)的主要技术编辑,显然我也偏向于我自己的书;- )。但是,我确实倾向于偏向许多最好的 Python 书籍,因为我要么参与过他们的编辑,要么与他们的作者成为朋友,或者两者兼而有之;-)。

于 2009-07-02T04:48:55.803 回答
8

在使用来自 Java 的 python 时,我遇到的最困难的事情是正确地将我的头包裹在 Duck Typing 的东西上……起初我认为这简直太可怕了,只是把我脖子后面的头发梳理了一下。

接下来是约定的范围,但这很容易。空白的重要性给了我一些障碍。

但是,一旦您在语言的简洁性和开发速度中放松自己,您就会学会更多地欣赏它。过了一会儿,我认为这是发生在我身上最好的事情!:-)

这里有几件事对我有很大帮助:

首先,我从这本书开始,了解了该语言的基础知识,Python 快速参考卡对日常使用非常有帮助。此外,控制台将是您快速尝试并巩固学习的最佳盟友。

对于 IDE,来自 eclipse 世界的PyDev对我来说是一个自然的选择,但还有更多可供选择。但是,如果您更熟悉 Visual Studio 环境,那么适用于 Visual Studio 的 Python 工具也相当不错。

祝你好运,希望你会发现 Python 和我一样有趣。

于 2009-07-02T05:20:59.320 回答
4

适应动态类型有一个很大的初始障碍。第一步是当您查看 Python 代码并意识到变量没有在任何地方定义时,您只是凭空创建它们,感觉就像跳过悬崖一样。在您的悬挂式滑翔机正确捕捉空气之前有一小段时间。

然后你需要一段时间才能相信你新发现的动态翅膀,你可能只能通过与它们进行特技飞行来获得它们。了解 python 如何处理引用,玩猴子修补方法,鸭子类型各种动物。尝试学习一些丑陋的技巧。

尽管您不能为此使用 IronPython,但您没有理由不使用它来学习 Python。

于 2009-07-02T06:26:08.147 回答
3

从 C# 到 Python 的野鸭式内陆地区,您将体验到相当多的文化冲击。缺乏类型和智能感知可能非常令人生畏。你在 JavaScript 方面的经验是好事。还知道 Python 的缩进敏感块规则对于缺乏经验可能会非常混乱(通常你要么喜欢它,要么讨厌它 :-)

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

于 2009-07-02T09:33:46.390 回答
3

对于有经验的 Python 开发者来说,Dive Into Python是一本非常好的书。

Wesley Chun 的《Core Python Programming》一书采用了一种更加“彻底”的方法,这对于有经验的开发人员来说可能有点慢。但是与其他语言相比,它允许非常容易地比较基本语法和运算符。Wesley 的写作风格非常容易阅读,他的示例项目非常重要,以至于实际上很有趣。

Python Cookbook是学习以“Pythonic”方式编程的绝佳参考。本书包含数百个 (?) 如何使用 Python 解决常见日常问题的示例。一般来说,“Cookbook”系列将比任何其他书籍更快地让您了解该语言的习语。

每当我需要学习一门新的编程语言时,我就会开始将它用于所有出现的“日常维护”任务——我通常会用 shell 脚本或常见的 unix 工具解决的所有小事情——我开始使用新的语言来解决这些问题。由于您有 .NET 经验,IronPython 可能是在学习 Python 时利用这些知识的好方法。即使您只将 IronPython 安装在个人沙箱中……并将其用于所有日常繁忙的编码任务——这也是学习 Python 语法和习语的好方法。

于 2009-07-02T15:22:53.923 回答
2

我建议使用IronPython来帮助您学习。它是 .NET 框架上的 Python 实现。因此,您可以通过访问 .NET 类库来使用/学习 Python。

一个好的起点是下载IronPython并查看IronPython in Action,这是一本非常好的书,着眼于 .NET 框架上的 Python。

编辑:由于 IronPython 不是一个选项,请忽略这个答案。不过谢谢。

于 2009-07-02T04:45:35.177 回答
2

如果你有时间,这本书Pro IronPython也值得一读。

于 2009-07-02T05:19:10.803 回答
2

我建议只是阅读有关它的书。一本适合初学者的书。它将包含许多您已经知道的内容,但您不会错过任何有关使用动态语言的内容。我可以向您指出Dive into Python,这似乎非常友好,或者The Python Tutorial似乎非常中肯(这就是我学习的方式)。

于 2009-07-02T06:30:48.687 回答