Python新手应该了解其社区和生态系统?

时间:2010-02-28 17:07:49

标签: python documentation

我正在拼凑一些Python的介绍,但是关注Python的社区和生态系统,而不仅仅是语言。通过如何像计算机科学家一样思考和其他很棒的教程,很容易熟悉这种语言,但在我知道什么是奶酪店之前我花了很多时间,或者,错误,PyPi是关于,pip和virtualenv如何工作以及为什么要使用它们,你应该去哪里寻求帮助,你应该遵循的有趣博客,你的代码看起来如何(PEP 8,编写pythonic代码)等等。 '软东西'。

当你刚开始使用Python时,最让你困惑的是什么?是否有某些你想知道的事情,或者你希望你早些时候偶然发现的资源?人们要了解吗?

我在StackOverflow上发现了一些类似的问题(例如here),但没有什么真正接近我们想听到的。希望这个问题对你的品味不太客观: - )

(并且,如果您想提供帮助,请随时发送消息。)

7 个答案:

答案 0 :(得分:19)

我认为初学者需要了解的关于Python生态系统的最重要的事情之一就是它是一种被专用库包围的通用语言。有经验的pythonistas知道他们,但新手不能:

  • 请勿停止使用tkinter:转发wxgtkqt
  • 请勿手动设置网页代码:使用TurboGearsPylonsWeb.pyDjango
  • 请勿使用硬件工具解析HTML / XML:使用lxmlbeautifulsoup
  • 不要对imagemagik进行系统调用:使用PIL
  • 不要手动制作高级数学:使用NumPySciPy
  • 不要手动访问简单数据库:使用SQLAlchemy之类的ORM。
  • 不要重新发明系统管理员轮子:使用Fabric

主要内容应列在一本带有指导的书中,以便在其中进行选择。

答案 1 :(得分:9)

“当你刚开始使用Python时,最让你困惑的是什么?”

学习Python的规则2:您认为想要的任何通用模块或框架已经编写完成。好几次。

困难的部分是意识到你的想法是

  1. 不是唯一的。

  2. 在你开始思考它之前已经有了改进。

  3. 已在某处发布。

  4. 因此,代码更少,搜索更多。广泛而灵活地搜索,直到找到与您想要的相似的内容。

    • 意识到您可能有一个您认为具有描述性的名称。但其他人可能会称之为不同的东西。加入社区,采用他们的命名。你可能不喜欢“ORM”这个短语,但这就是它的名字。

    • 意识到你的想法,无论看起来多么健康,都可能真的很糟糕。当你发现一个似乎有“不必要的额外功能”的框架时,你可能会遗漏一些想法。

    • 意识到你的想法,无论看起来多么“直观”,都可能真的很糟糕。当你发现一个看似“反直觉”的框架时,问题可能就是你的了。先了解它们,然后在掌握了它们之后进行比较和对比。直到你掌握了他们的知识,继续搜索和学习。

答案 2 :(得分:7)

与生态系统和间接社区有关的几点:

  • 我希望我被提醒更多关于Batteries included的信息。我认为应该告诉人们打印Table of Contents of the Standard Library并将其保存在枕头下,以便进行频繁的评论(这个建议,我终于花了几年时间,从在线介绍/初学者的视频演示!)。 [相对]稳定性,Std Lib广泛但相关的内容说明了社区领袖及其心爱的BDFL的深思熟虑的治理。

  • 我认为对于PiPy的极端变化,新人也可以被“警告”(这个词可能太强大,太不公平)。这反映了用户和贡献者的集体,充满活力,聪明和多样化(在背景,应用领域,兴趣......方面)。然而,这可能是压倒性的,并且可能存在风险,因为那里的所有包裹都没有“黄金时间准备好”(但许多人并且“多次拯救了我的生命”)。

  • 即使你觉得Python太新了,也不要只是使用这些库,而是要深入了解!许多语言都是如此,但可能特别是Python,从细读各种源代码中可以学到很多东西。对于Python来说这可能是特别正确的原因是语言本身固有的(多范式,高级抽象......),但也因为编码(和架构)风格的相对一致性和因为社区内的一般合作水平。

答案 3 :(得分:5)

“当你刚开始使用Python时,最让你困惑的是什么?”

学习Python的规则1:使用Source,Luke。

有关SO的问题,要求学习Python的“好”来源。最好的答案相当于“阅读Python附带的库。”

可以说Python附带的库是古怪的。在某些地方。这使得他们学习起来更好。

  1. 有一群志同道合的人不是克隆人。

  2. 开源软件是您可以使用的最高质量的软件,但它不是由严格执行标准的付费开发人员创建的。

答案 4 :(得分:4)

解释PEP是什么,它是如何编写的以及编写它们的人,我们可以在哪里找到它们。 PEP提供了有关该语言特定功能的大量背景信息。它们也是展示python发展速度的工具。

(我希望我早些时候读过一些PEP,但我并不是真的知道它们,尽管它们经常在手册中链接)

答案 5 :(得分:4)

来自PEP 20:

import this

(又名Python的禅宗)

答案 6 :(得分:1)

开发一个可以用easy_install等安装的python包...我认为它相当于开发jar或dll等....

同样的道理,用virtualenv或buildout

开发所述包

如果我早点知道这些事情,我可能会使用python而不仅仅是在我第一次使用它时编写脚本。