跳至主要内容

Python 2 与 3:您需要了解的一切

在本文中,我们将介绍 Python 2 和 3 的主要差异、哪一个更好,以及在启动您的数据科学之旅时应选择哪一个
Javier Canales Luna
Javier Canales Luna

创建您的免费账户

实践并学习路径你的进步。

使用 Google 继续继续即表示您接受我们的 使用条款,我们的 隐私政策 ,并且您的数据存储在美国。

Python 2 与 3

如果您正打算进入数据科学领域,很可能已经听说过 Python。Python 是一种开源、通用的编程语言,在数据科学和其他软件领域(如 Web 与游戏开发、网络安全和区块链)中都有广泛应用。

近年来,Python 的受欢迎程度迅速飙升。它在多个编程语言流行指数中名列前茅,包括 TIOBE 指数和 PYPL 指数。您可以在另一篇文章中进一步了解 Python 的用途。

由于语法简洁易读,Python 常被认为是新手最容易上手的编程语言之一。如果您是数据科学新手,不确定先学哪种语言,Python 是最佳选择之一。您可以在 DataCamp 上从 Data Scientist with Python 职业路径开始您的数据科学之旅。

不过,事情也可能有点让人困惑。您或许还听说过 Python 2 和 3。这是什么?难道 Python 不是只有一个语言版本吗?该学哪一个?不必紧张:除非有特殊情况,如今您几乎总是会使用 Python 3。无论如何,了解它们的差异总是有益的。

在接下来的部分中,我们将解释什么是 Python 2 和 3、它们之间的主要区别,以及哪个更值得学习和使用。

什么是 Python 2

Python 由 Guido van Rossum 于 20 世纪 80 年代末开发,并于 1991 年首次公开发布。经过九年的发展与日益增长的普及,Python 2.0 于 2000 年发布。

Python 2 带来了名为 Python Enhancement Proposal(PEP,Python 增强提案)的全新技术规范,旨在为编写 Python 代码提供指南与最佳实践。它还引入了诸如列表推导式、Unicode 支持以及循环检测垃圾回收器等新功能。

但 Python 2 最重要的变化在于其开发流程本身。Python 被设想为一种易于初学者学习的编程语言。为实现这一目标,由 Guido van Rossum 领导的 Python 开发团队决定转向更透明、由社区推动的开发流程。

Python 2 此后持续演进。后续版本不断为该语言增加新功能。Python 2 的最后一个版本是 2010 年发布的 Python 2.7,该版本的支持已于 2020 年 1 月 1 日结束。

什么是 Python 3

Python 3 是该编程语言的下一代版本。它于 2008 年 12 月发布,带来了多项改进和新特性。

Python 3 并非只是对 Python 2 进行调试后的又一版本。为解决先前版本中的安全问题与设计缺陷,新版本对语言进行了大幅调整。Python 3 引入了新的语法,旨在避免冗余或重复的代码,即以多种方式完成同一任务的代码。通过提供单一而清晰的做事方式,Python 3 的易用性和可读性有了显著提升。

Python 3 的一些主要变化包括:将 print 声明改为内置函数、改进的整数除法以及更完善的 Unicode 支持。由于这些变更的性质,Python 3 与 Python 2 不兼容,亦即向后不兼容。

为何会有不同的 Python 版本?

下面通过一些代码示例来说明 Python 2 与 3 的差异!

全新的 print() 函数

Python 2 中的 print 语句在 Python 3 中被 print() 函数取代,这意味着我们需要用括号包裹要输出的对象。

Python 2:

>>> print 'Hello DataCamp'
Hello DataCamp

Python3:

>>> print('Hello Datacamp')
Hello Datacamp

整数除法

在 Python 2 中,整数相除的结果总是整数。在 Python3 中,结果始终带有小数,使整数除法更直观。

Python 2:

>>> 5/2
2

Python 3:

>>> 5/2
2.5

Unicode 支持

在 Python 2 中,由于默认使用 ASCII 字符,每个 Unicode 字符串都必须加上“u”前缀。相比之下,Python 3 默认将字符串存储为 Unicode,比 ASCII 字符串更通用。

Python 2:

>>> print type("Hello DataCamp!") # this is an ASCII string
<type 'str'>

>>> print type(u"Hello DataCamp!") # this is a Unicode string
<type 'unicode'>

Python 3:

>>> print(type("Hello DataCamp!")) # this is a Unicode string
<class 'str'>

Range 函数

Python 2 中的 xrange() 函数在 Python 3 中已不复存在。它被 range() 函数取代,后者在迭代序列时具有更好的性能。

Python 2:

>>> xrange(1,10)
xrange(1, 10)
>>> type(xrange(1,10))
<type 'xrange'>

Python 3:

>>> range(1,10)
range(1, 10)
>>> type(range(1,10))
<class 'range'>

在下表中,您可以找到 Python 2 与 3 的主要差异。

 

Python 2

Python 3

发布日期

2000

2008

语法

更复杂,较难理解

可读性强,易于理解

性能

由于设计缺陷,性能较慢

相较 Python 2,代码运行时性能有所提升

print 函数

print “Welcome to Datacamp”

print (“Welcome to Datacamp”)

整数除法

结果为整数值,小数部分总被截断

结果始终为浮点数值

Unicode 支持

默认使用 ASCII 字符。要存储 Unicode 值,需要使用“u”来定义

字符串默认以 Unicode 存储

Range

xrange() 函数用于创建数字序列

range() 函数在迭代时比 xrange() 更高效

向后兼容性

将 Python2 迁移到 Python 3 相对容易。

Python 3 与 Python 2 不向后兼容

库

许多较旧的 Python 2 库不支持向前兼容

大多数为 Python 3 开发的新库无法在 Python 2 中使用

能把 Python 2 转换为 3 吗?

演进是每种编程语言的关键特性。语言会随着时间推移而发展,以提升性能并保持对用户的相关性。从 Python 2 向 3 迁移是 Python 历史上最大的一次变革。

尽管在支持结束后,公司和开发者最终迁移至 Python 3 合情合理,但将代码库从旧版本移植到新版本可能是一个困难且令人生畏的过程。在 Python 生态中这一点尤为突出,因为许多 Python 2 库并不支持向前兼容。

幸运的是,有一些资源可以帮助将 Python 2 代码转换为 Python3。

  • 2to3:一个 Python 程序,可对 Python 2.x 源代码应用一系列修复器,将其转换为有效的 Python 3.x 代码。
  • Python-Future:允许您使用一套干净且兼容 Python 3.x 的单一代码库,以最小开销同时支持 Python 2 和 Python 3。
  • Six:一个兼容 Python 2 和 3 的库。它提供实用函数,平滑不同 Python 版本之间的差异,旨在编写可同时兼容两者的 Python 代码。

Python 2 与 3:哪个更好?

虽然几年前这还是个有争议的问题,但如今毫无疑问,Python 3 是更好的选择。首先,Python 2 自 2020 年起已不再受支持。因此,新项目使用 Python 3.x 更为合理。其次,既然 Python 2 已停止支持,所有的改进都发生在 Python 3 阵营。该语言在每次升级中持续改进(最新版本为 Python 3.10.5,且已有包含重要新特性的 Python 3.11 测试版)。

在此背景下,Python 3 的大规模采用并不令人意外。根据 JetBrains 开展的 2021 年 Python 开发者调查,平均来看,使用 Python 3 的开发者占比为 95%。此外,使用 Python 2 的比例每年下降 5 个百分点。

Python 2 与 Python 3 的采用情况

Python 2 与 Python 3 的采用情况

来源:JetBrains

该使用哪个 Python 版本?

如今,Python 3 是最佳的 Python 版本。选择它是最稳妥的,尤其适合初学者。自停止支持以来,Python 2 的后劲迅速衰减,越来越多的公司正将代码迁移到 Python 3。鉴于其在诸多软件领域的需求增长、广泛的使用以及海量由社区驱动的库,学习 Python 3 合乎情理。

不过需要注意的是,在某些情况下,您仍然需要使用 Python 2。首先,许多公司仍保有难以迁移至 Python 3 的 Python 2 遗留代码库。如果您所在的公司或项目属于这种情况,您需要学习 Python 2。其次,在某些软件领域(如 DevOps),仍然需要 Python 2。

总之,如果您打算开启数据科学的新职业生涯,Python 3 是明智之选。借助 DataCamp,一切都已为您就绪。查看 我们的 Python 课程与学习路径,今天就开启您的数据之旅!

Python 最佳实践常见问答

哪个 Python 版本更受欢迎?

Python 3 毫无争议地胜出,与 Python 2 相比采用率极高。

Python 适合用于数据科学吗?

数据科学中最流行的编程语言是 Python 和 R。DataCamp 拥有大量 Python 课程,可帮助您入门

哪个版本的运行时性能更好?

是的!在几乎所有测试中,Python 3 通常比 Python 2 更快。

Python 2 的最新版本是什么?

Python 2.7。该版本已于 2020 年结束支持和维护。

为什么要升级到 Python 3?

Python 3 是更好的语言,并且配备的标准库也优于 Python 2。另外,自 2020 年起,语言和标准库的改进仅发生在 Python 3 中。

我可以将 Python 2 移植到 Python 3 吗?

有一些资源可用于将代码更新到 Python 3,例如 2to3、Python-Future 和 Six。

我可以同时安装 Python 2 和 3 吗?

可以。您可以通过为 Python 2 和 3 分别维护独立的虚拟环境来实现。

主题