【发布时间】:2010-11-16 09:43:16
【问题描述】:
最近我决定扩展我的编程视野并学习 Python 编程语言。虽然我在大学的课程和工作中的一两个项目中使用了一点 Python,但我绝不是专家。我的问题如下:我应该使用 2.x 版本还是应该直接跳到 3.0?我倾向于 3.0,因为我将编写更多用于个人/学习用途的应用程序,但我想在开始之前看看是否有任何好的论据反对它。
【问题讨论】:
标签: python python-3.x
最近我决定扩展我的编程视野并学习 Python 编程语言。虽然我在大学的课程和工作中的一两个项目中使用了一点 Python,但我绝不是专家。我的问题如下:我应该使用 2.x 版本还是应该直接跳到 3.0?我倾向于 3.0,因为我将编写更多用于个人/学习用途的应用程序,但我想在开始之前看看是否有任何好的论据反对它。
【问题讨论】:
标签: python python-3.x
我认为直接进入 3.0 会更好。除非你有一个遗留代码库要处理,否则学习 2.xx 的做事方式几乎没有什么好处。
在 Python 世界中(实际上与大多数其他世界一样),发布确实需要一段时间才能向下迁移到所有子项目,但如果您发现需要转换回 2.xx,我不会'不要认为你会发现重新学习的东西特别痛苦。
【讨论】:
使用 python 3.1,卢克。
【讨论】:
绝对不是 3.0 - 3.1 在各个方面都更稳定、更好、更快;现在从 3.0 开始绝对没有意义,如果您想使用 3 系列,那么它应该是 3.1。
对于 2.6 与 3.1,3.1 是一种更好的语言(尤其是因为多年来积累的一些杂乱无章的东西被删除了,但为了向后兼容而必须保留在 2.* 中),但生态系统的所有其他部分(从扩展到工具,从书籍到集体知识)仍然非常支持 2.6 —— 如果您不关心能够使用(例如)某些 GUI 或科学扩展,部署在 App Engine 上,使用 COM 编写 Windows 脚本,拥有一个漂亮的第三方 IDE 等等,3.1 是可取的,但如果你关心这些东西,现在还是 2.*。
【讨论】:
你应该使用你所学的任何编程语言的最新版本,除非你有特定的理由不。由于您没有不支持 Python 3.0 的现有项目,因此您可以随意使用最新版本。
【讨论】:
在其他库赶上对它的支持之前,不应使用 Python 3.1。
您现在应该使用 2.6。它有几个向后移植的 3.x 功能,因此以后迁移到 3.x 不会很困难,并且您不会学习过时的做法。
【讨论】:
好消息是,同时学习 Python 2.x 和 3.x 并没有那么难。您可以安装最新的 2.x 版本作为系统注册的版本默认运行 Python 脚本,也可以安装最新的 3.x 版本以在需要时显式启动。这就是我在 Windows Vista 系统上所拥有的。
那么,学习2.x和3.x版本区别的关键文档是:
http://docs.python.org/3.1/whatsnew/3.0.html
如果您阅读了基于 2.x 的 Python 学习材料,并且还参考了上面的“Python 3.0 中的新功能”链接,您将了解事情的变化。另请参阅其他 whats new 文档,例如 3.0 和 3.1 之间的差异,但上面的链接是了解 2.x 与 3.x 变化的主要链接。
【讨论】:
简答:从 Python 2.6 开始。
原因:当您可以利用他人的工作时,编程会更有趣、更有用。这意味着经常使用 3rd 方库。许多流行的 Python 库尚不支持 3.x。想到 PIL 和 NumPy/SciPy。我最喜欢的解释器 ipython 也不适用于 3.0。许多单元测试框架和 Web 框架还没有在 3.0 上。
因此,如果您从 3.x 开始,许多门将向您关闭,至少在 3.x 移植开始之前。无可否认,Python 3.x 中有很多不错的特性,但其中一些已经被向后移植到 2.6,还有一些将被移植到 2.7。所以暂时坚持使用 2.6,并在一年左右的时间重新评估 3.x。
【讨论】:
使用 3.1
为什么?
1) 因为只要大家还在使用 2.6,库迁移到 3.1 的理由就会减少。只要这些库没有移植到 3.1,您就只能选择不使用 3.1 的优势,或者只使用向后移植的功能集的骇人听闻的解决方案来完成工作。 做一个有远见的思想家,帮助推动 Python 向前发展。
2) 如果你现在学习和使用 3.1,以后海量移植完成后你就不必重新学习了。我知道有些人说你不需要学很多东西,但为什么要学那些老废话呢? Python 本身正在向 3.1 迈进,库将向 3.1 迈进,不得不追赶并重新学习您已经在使用的语言是很糟糕的。
3) 3.1 是一种更好的语言,比 2.6 更稳定、更一致……这是正常的。从 2.6 中吸取的经验教训都倾注到 3.1 中以使其变得更好。 这是一个称为 PROGRESS 的过程。这就是为什么没有人仍然使用 Windows 3.1。这是事情向前发展的方式。否则,您认为他们为什么会一开始就麻烦地向后移植功能集?
4) 如果您正在学习 Python,并学习 2.6,那么当您真正熟悉该语言时,端口将被淘汰,您将不得不重新学习库和语言。如果你从 3.1 开始,那么当你对语言感到熟悉的时候,ports 就会出来,然后你就可以学习你感兴趣的库了。这是一个更顺畅的过程。
5) 成为一个更好的开发者。如果你必须学习和重新学习相同的东西,你的理解不会很深。通过只学习这种语言及其库一次,您将有更多时间使用它们,而不是重新学习语法。这使您可以更好地理解它们。如果你真的因为放弃图书馆而错过了一些作品?写他们。您可能不需要整个库,并且通常可以只编写您需要的那些部分,并为自己开发工具。这再次有助于您更好、更深入地理解语言。
【讨论】:
six 或类似的。它是一种更好的语言,并且速度是 2.7 的两倍(已经很慢,请注意 GIL)只是CPython 中的一个实现问题。”我的建议:不要听别人的。自己做决定并承担后果。检查什么有效,而不是粉丝告诉你的“正确”。