Python 开发团队已于 2020 年 1 月 1 日正式停止对 Python 2.7 的技术支持。尽管 Python 2 的生态库曾经非常丰富,但为了代码的长期维护和安全性,迁移至 Python 3 已成为行业标准。本文详细梳理了 Python 2 与 Python 3 在语法、标准库及运行机制上的核心区别,并提供迁移建议。
1. 兼容性检查
在迁移前,可以使用以下命令初步检查 Python 2 代码是否能在 Python 3 环境中编译通过:
python3 -m py_compile filename.py
2. 字符串与编码处理
2.1 Unicode 原生支持
Python 3 对 Unicode 字符提供了原生支持,彻底解决了 Python 2 中因默认使用 ASCII 码导致的编码混乱问题。
| 特性 | Python 2 | Python 3 |
|---|---|---|
| 字符串类型 | str (非 unicode) 和 unicode 两种 | 只有 str 类型,取消 unicode |
| 继承关系 | str 和 unicode 继承于 basestring | 无 basestring,str 继承于 object |
| 字节与文本 | 不严格区分 str 和 bytes,两者等价 | 严格区分 bytes 和 str,禁止隐式转换 |
在 Python 3 中,打开二进制文件时必须明确指定二进制模式:
# Python 3
with open('data.bin', 'rb') as f:
data = f.read()
2.2 标准模块重命名
Python 3 遵循 PEP8 规范,将部分标准模块名称改为全小写或调整层级结构。
| Python 2 模块 | Python 3 模块 |
|---|---|
__builtin__ | builtins |
BaseHTTPServer | http.server |


