我学习、工作和使用Python已经有一年半的时间了。作为一名慢慢转向生物信息学的生物学家,这种语言一直是我在实验室所做的所有主要贡献的核心。我或多或少爱上了Python让我表达美丽的解决方案的方式,也爱上了这种语言的语义,它允许从思想到可行的代码的自然流动。

有一个问题,我很少在这里或其他论坛看到,我想听听你的回答。在我看来,这个问题对于任何走在Python改进道路上的人来说都很重要,但他不知道下一步应该做什么。

让我先总结一下我不想问的问题;)

我不想知道如何快速学习Python 我也不想找出熟悉这门语言的最佳方法 最后,我不想知道“一个技巧可以解决所有问题”的方法。

我想知道你的意见是:

从学徒到大师,你会向Python熟练者推荐哪些步骤,以便一个人不断提高,成为一个越来越好的Python程序员,一次一步。SO上的一些人几乎因为他们的Python能力而值得崇拜,请启发我们:)

我喜欢的那种回答(但请随意给读者惊喜:P),格式或多或少是这样的:

阅读这个(例如:python教程),注意那种细节 这么多时间/问题/行代码的代码 然后,读这本(例如:这本或那本书),但这次,注意这本 解决一些现实生活中的问题 然后,继续读取Y。 一定要掌握这些概念 X时间的代码 回到这样那样的基础或进一步讨论…… (你懂的)

我真的很想知道你对一个人在不同阶段应该注意什么问题的看法,以便不断进步(当然,要付出适当的努力)。如果你来自一个特定的专业领域,讨论一下你认为适合这个领域的道路。

编辑:感谢您的大力投入,我又回到了Python改进的轨道上!非常感谢!


当前回答

如果你在科学中使用python(看起来你是这样),其中的一部分将是学习和理解科学库,对我来说,这些将是

numpy scipy matplotlib mayavi / mlab 查科 Cython

了解如何使用正确的库和向量化代码对于科学计算是至关重要的。

我想补充一点,用常见的python方式(面向对象的方法、列表、迭代器)处理大型数字数据集的效率非常低。在科学计算中,有必要以与大多数常规python编码员处理数据的方式截然不同的方式构建代码。

其他回答

彻底理解所有数据类型和结构

对于每种类型和结构,编写一系列演示程序来练习类型或数据结构的各个方面。如果你这样做了,在博客上记下每一个笔记可能是值得的……它可能对很多人有用!

你已经有了很多阅读材料,但如果你能处理更多,我建议你 通过阅读python增强建议来了解python的进化,特别是“完成”的pep和“延迟、放弃、撤回和拒绝”的pep。

通过了解语言的变化,所做的决定及其基本原理,您将吸收Python的哲学,并理解“地道的Python”是如何产生的。

http://www.python.org/dev/peps/

理解自省

写一个dir()的等价函数 编写一个type()的对等体 弄清楚如何“打猴子补丁” 使用dis模块查看各种语言结构是如何工作的

做这些事

给你一些关于python如何实现的理论知识 在底层编程方面给你一些很好的实践经验 让你对python数据结构有一个很直观的感觉

你看过《用Python编程生物信息学》这本书吗?看来你是焦点小组的一员。

深入了解Python知识的一个好方法是深入了解您已经使用的库、平台和框架的源代码。

例如,如果您正在Django上构建一个站点,那么许多可能困扰您的问题都可以通过查看Django如何实现相关特性来解决。

通过这种方式,您将继续学习新的习语、编码风格和Python技巧。(有些是好的,有些是坏的。)

当你在源代码中看到一些你不理解的Pythony时,跳转到#python IRC频道,你会发现很多“语言律师”乐意为你解释。

多年来这些小的澄清的积累导致了对语言及其所有来龙去脉的更深刻的理解。