我正在拼凑一些关于Python的介绍,但是关注Python的社区和生态系统,而不仅仅是语言.随着如何看待一个计算机科学家和其他伟大的教程,很容易熟悉的语言,但我花了一个公平的,而之前,我知道什么是奶酪店,或犯错,PyPI将是关于如何PIP和virtualenv中工作为什么你应该使用它们,你应该去哪里寻求帮助,你应该遵循的有趣的博客,你的代码应该如何看(PEP 8,编写pythonic代码)等等.'软东西'.
刚开始使用Python时最让你困惑的是什么?是否有某些你想知道的事情,或者你希望你早些时候偶然发现的资源?人们要了解吗?
我在StackOverflow上发现了一些类似的问题(例如 这里),但没有什么真正接近我们想听到的.希望这个问题对你的口味不太客观:-)
(而且,如果您想帮忙,请随时发送消息.)
我认为初学者需要了解的关于Python生态系统的最重要的事情之一就是它是一个由专用库包围的通用语言.有经验的pythonistas知道他们,但新手不能:
不要停止到tkinter:去wx,gtk或qt.
不要手工编写Web代码:使用TurboGears,Pylons,Web.py或Django.
不要使用硬件工具解析HTML/XML:使用lxml 或beautifulsoup.
不要对imagemagik进行系统调用:使用PIL.
不要手动制作高级数学:使用NumPy和SciPy.
不要手动访问简单数据库:使用像SQLAlchemy这样的ORM .
不要重新发明系统管理员轮子:使用Fabric.
等等
主要内容应列在一本带有指导的书中,以便在其中进行选择.
"当你刚开始使用Python时,最让你困惑的是什么?"
学习Python的规则2:您已经编写过任何您认为想要的通用模块或框架.几次.
困难的部分是意识到你的想法
不是唯一的.
在你开始思考它之前已经有了改进.
已经发布在某个地方.
因此,代码更少,搜索更多.广泛而灵活地搜索,直到找到与您想要的相似的内容.
意识到您可能有一个您认为具有描述性的名称.但其他人可能会称之为不同的东西.加入社区,采用他们的命名.你可能不喜欢"ORM"这个短语,但这就是它的名字.
意识到你的想法,无论看起来多么健康,都可能真的很糟糕.当你发现一个似乎有"不必要的额外功能"的框架时,你可能会遗漏一些想法.
意识到你的想法,无论看起来多么"直观",都可能真的很糟糕.当你发现一个看似"反直觉"的框架时,问题可能就是你的了.先了解它们,然后在掌握了它们之后进行比较和对比.在你掌握了他们的知识之前,不断寻找和学习.
与生态系统和间接社区相关的几点:
我希望我被提醒更多关于Batteries included
.我认为应该告诉人们打印标准库的目录并将其保存在枕头下,以便进行频繁的评论(这个建议,我终于花了几年时间,从在线介绍/初学者的视频演示中获取! ).[相对]稳定性,Std Lib的广泛但相关的内容说明了社区领袖及其心爱的BDFL的深思熟虑的治理.
关于PiPy的极端变化,我认为新人也可以被"警告"(这个词可能太强大,太不公平).这反映了用户和贡献者的集体,充满活力,聪明和多样化(在背景,应用领域,兴趣......方面).然而,这可能是压倒性的,并且可能存在风险,因为那里的所有包裹都没有"黄金时间准备好"(但许多人并且"多次拯救了我的生命").
即使你觉得Python太新了,也不要只使用这些库,而是要深入了解它!许多语言都是如此,但可能特别是Python,从细读各种源代码中可以学到很多东西.对于Python来说这可能是特别正确的原因是语言本身固有的(多范式,高级抽象......),但也因为编码(和架构)风格的相对一致性以及一般的协作水平在社区内.
"当你刚开始使用Python时,最让你困惑的是什么?"
学习Python的规则1: 使用Source,Luke.
SO上有一个问题,要求学习Python的"好"来源.最好的答案相当于"阅读Python附带的库".
可以说Python附带的库是古怪的.在某些地方.这使得他们学习起来更好.
有一群志同道合的人不是克隆人.
开源软件是您可以使用的最高质量的软件,但它不是由严格执行标准的付费开发人员创建的.