Python 2 与 Python 3 的主要区别详解
随着 Python 2 于 2020 年正式停止维护,开发者应全面转向 Python 3。尽管两者核心语法相似,但在性能、编码、语法特性及标准库等方面存在显著差异。本文详细梳理了主要区别,帮助开发者快速理解并迁移。
1. 性能
Python 3 在早期版本(如 Py3.0)运行 pystone benchmark 的速度比 Py2.5 慢约 30%。Guido van Rossum 认为 Py3.0 有极大的优化空间,特别是在字符串和整数操作上。后续版本(如 Py3.1)性能提升至比 Py2.5 慢 15% 左右。现代 Python 3 版本经过大量优化,性能已大幅提升,甚至在某些场景下优于旧版 Python 2。
2. 编码
- Python 2:源码文件默认使用 ASCII 编码,处理非 ASCII 字符需显式声明
# -*- coding: utf-8 -*-。 - Python 3:源码文件默认使用 UTF-8 编码,无需额外声明即可直接处理中文等 Unicode 字符。
3. 语法差异
3.1 运算符与关键字
- 比较运算符:去除了
<>,全部改用!=。 - 字符串表示:去除了反引号
`,统一改用repr()函数。 - 关键字:加入了
as和with;True、False、None变为关键字而非变量。 - 整型除法:
- Py2:
1 / 2结果为0(整除)。 - Py3:
1 / 2结果为0.5(浮点)。若需整除,请使用//。
- Py2:
- Nonlocal 语句:新增
nonlocal语句,用于指派外围(非全局)变量。 - Print 与 Exec:
- Py2:
print是语句,exec是语句。 - Py3:
print()是函数,exec()是函数。
- Py2:
- 顺序操作符:例如
x < y,当x和y类型不匹配时抛出TypeError,而不是返回随机布尔值。 - 输入函数:
- Py2:使用
raw_input()读取键盘输入。 - Py3:使用
input()代替raw_input()。
# Py2 guess = int(raw_input('Enter an integer : ')) # Py3 guess = int(input('Enter an integer : ')) - Py2:使用


