Python 2 和 Python 3

原文:https://www.studytonight.com/python/python-2-vs-python-3

如果你是在 2020 年阅读这篇文章,那么讨论这个问题是没有意义的,除非你在某个项目上工作,这个项目仍然运行在 Python 2.x 的某个版本上

当我们说 Python 2.x 时,我们指的是 Python 2.7,当我们说 Python 3.x 时,我们指的是 Python 3.7 版本。

Python 在 2008 年发布了 Python 3 版本的编程语言。最初对采用 Python 3 有过犹豫,但现在不再犹豫了。

几乎所有 python 的库/模块都已经迁移到 python 3,或者已经兼容 python 3.x 版本。

所以现在,使用 Python 2.x 版本是没有意义的,除非您正在您的应用中处理一些仍然运行在 Python 2.x 版本上的遗留代码。


Python 2 和 Python 3 之间的重要区别

尽管与 Python 2 相比,该语言的新版本(即 Python 3)有许多变化。如果您将代码从 Python 2.7(或任何其他 2.x 版本)移植到 Python 3.x 版本,我们将讨论最重要的问题。

新的print()方法语法

是的,这是最明显的变化之一,因为当你用 python 编码时,print语句被大量使用。

在 python 2.x 中,不需要在print关键字后添加括号来括住要打印的文本,但是从 python 的 3.x 版本来看,正确的语法是print("TEXT TO BE PRINTED")

让我们看一些代码示例来理解:

# In python 2.x
print "Text to be printed"

要打印的文本

而在 Python 3.x 版本的情况下,相同的代码将变成,

# In python 3.x
print("Text to be printed")

要打印的文本

除法运算符(/)的变化

Python 2.x 中的除法运算符返回了一个整数结果值,而在 Python 3.x 中,您现在得到了一个更精确的浮点结果值。

让我们看一些代码示例来理解:

# In python 2.x
print 5/2

Two

而在 Python 3.x 版本的情况下,相同的操作将返回一个浮点值,

# In python 3.x
print(5/2)

Two point five

功能xrange()不再支持

在 Python 2.x 中,如果我们想要生成一个范围内的数字列表,我们可以使用range函数返回一个列表,例如range(2)将返回列表[0,1],或者使用xrange()函数,该函数不返回列表,但返回一个迭代器对象,您可以在其上进行迭代并获得数字的范围。简单来说,xrange()函数不是一次创建一个数字列表并返回,而是只在需要的时候生成范围内的数字,也就是说,当我们使用循环时。

Python 3.x 的情况下,没有xrange()功能。range()功能完成了xrange()以前做的事情。

了解了 python 中迭代器和 Iterables 的概念之后,你会更好的理解这个变化。

错误处理

python 中错误处理tryexcept块的用法在语法上有一点变化。

让我们先看一些代码示例来看看变化,

# In python 2.x
try: 
    # some statement that may cause error 
except SomeError, err: 
    print err, "Error Occured"

而在 Python 3.x 版本的情况下,在except块中,我们现在使用带有错误类型及其变量对象的as关键字,

# In python 3.x
try: 
    # some statement that may cause error 
except SomeError as err: 
    print(err, "Error Occured")

这一改变是为了使语法更加易读和用户友好。如果您是 Python 中错误和异常处理的新手,可以在本教程系列的后面部分了解它。

一些更值得一提的变化

以下是我们想要提及的更多变化:

  1. 在 Python 2.x 中,隐式或默认的字符串编码是 ASCII,而在 Python 3.x 中,它是 Unicode。
  2. python 2.x 版本早期提供的许多 Python 库和模块可能不适用于 Python 3.x,但大多数都适用。
  3. 有了 Python 3.x,语言的语法变得更加用户友好。

结论

我们建议您使用 Python 3.x 版本进行学习。虽然在我们的一些教程中你可能会发现print语句用的是旧语法,但是现在你知道 Python 3.x 中print()的正确语法是什么了,所以编辑一下代码;)