Ruby与Python:哪个更容易管理不同的语言版本?
我听说最近的Python版本(3.x?)有一些问题,这导致大家不太愿意去使用它。这是真的吗?如果是真的,不同的人用不同版本的Python会不会造成问题?现在哪个版本的Python使用得最广泛呢?
Ruby有没有类似的问题,还是大多数人都已经切换到1.9版本了呢?
请注意,这个问题并不是在比较两者,而是专门针对这个具体的问题。
5 个回答
来自Python的维基关于选择合适的Python版本的内容:
简单来说:Python 2.x 是现在的主流,Python 3.x 是全新的选择。
Python 3.x 并不是完全和 2.x 不兼容。只是某些方面不兼容,而这些方面恰好是比较重要的。Python 3 的设计目的是为了修正一些早期版本(从 Python 1.x 开始)存在的核心架构问题。尽管如此,几乎所有的语法变化都已经被移植到了 Python 2.6.x 及之后的版本中。
以下是 Python 3 的一些主要区别,虽然这不是一个全面的列表:
print
现在是一个函数,而不是一个语句。这意味着你可以用print()
来扩展它并传入参数。在 Python 2.6.x 中,你可以通过from __future__ import print_function
来使用它。在 Python 2.7 中,两种方式都可以用(语句:print 'hi'
,函数:print('hi')
)。- 异常处理现在需要使用
except Foo as foo_err
的语法。(之前的except Foo, foo_err
语法在捕获多个异常时容易引起混淆,因为它用逗号分隔来给变量赋值。)Python 2.6 及以上版本都支持这两种格式。 - 所有类默认都继承自
object
,创建新类时不再需要显式地继承object
。有关更多信息,请参见(Python的旧式类与新式类)。
Python 3.x 被广泛采用的一个核心问题就是这些重大变化。许多生产环境仍在使用 Python 2,直到 Python 3 有广泛的第三方库支持,采用速度会比较慢。
如果你刚开始学习 Python,建议尝试最新的版本。目前是 3.2。如果发现所需的库支持不足,可以退回到 Python 2.7.2,并鼓励库的维护者移植到 Python 3!
Python 2.7 将会存在很长时间,它是 Python 2.x 的最后一个主要版本。这给我们提供了充足的时间来适应 Python 3,因为所有主要的语法变化已经默认包含在内。
问题不在于Python 3.x本身,而是从2.x到3.x的过渡没有一个合理的方案,这让很多人选择继续使用2.x。
这确实是一个严重的错误,但也只是个别情况:除此之外,Python的更新过程非常简单明了。
关于Python,大多数人现在都在使用2系列的最新版本。一般来说,Python在不同版本之间混用可能会让人感到头疼(至少以前是这样的),不过解决办法很简单,就是把你的软件和它所依赖的整个Python环境一起打包交付。