人人都会AI编程

1.4 版本演进:Python 2 与 Python 3 核心差异,3.x 年度版本新特性

更新时间:2026-07-12

Python 的发展并非一帆风顺。最重大的断代事件就是 Python 2 到 Python 3 的迁移。了解这段历史和版本特性,可以帮你理解一些老代码的写法,也能让你更好地利用新版 Python 带来的便利。

Python 2 与 Python 3 核心差异

Python 3 于 2008 年发布,设计目标是清理语言中积累的冗余和不一致。由于改动大且不向后兼容,整个社区花了近十年才完成迁移。Python 2 已于 2020 年 1 月 1 日正式停止维护,现在新项目应全部使用 Python 3。

对普通开发者来说,印象最深的差异主要有这几条:

| 方面 | Python 2 | Python 3 |
|------|----------|----------|
| print | 语句,print "hello" | 函数,print("hello") |
| 整数除法 | 3/2 得 1(地板除) | 3/2 得 1.5(真除法),3//2 得 1 |
| 字符串 | 默认是字节串(str 是 bytes),Unicode 须加前缀 u"你好" | 默认是 Unicode(str 是文本),字节串用 b"bytes" |
| range | 返回列表,range(100) 立刻生成 100 个整数 | 返回惰性的 range 对象,省内存,行为类似生成器 |
| 异常 | 捕获语法 except Exception, e: | 必须用 except Exception as e: |
| 迭代对象 | 很多方法返回列表(如 dict.keys()) | 返回动态视图,支持集合运算 |
| input | input() 自动将输入当作表达式求值(危险),通常用 raw_input() | input() 始终返回字符串,安全且统一 |

实用总结:如果你在维护老代码或看历史资料,遇到上述差异时,心里有个对照就行。日常开发中只要记住:Python 3 的字符串是文本(Unicode)、print 要加括号、整数除法默认得出小数,这三条就足够让你避开 90% 的坑。

Python 3.x 的年度新特性

Python 从 3.6 开始基本确立了“一年一个大版本”的节奏(通常在每年 10 月)。每个新版本都会引入一些语言特性、性能优化或标准库改进。以下列出对实际开发影响较大的亮点,按版本过渡区分为“已普及的常用特性”和“较新版本特性”。

已广泛使用的特性(Python 3.6 - 3.9)
  • 3.6
  • f-stringf"Hello {name}" 大幅提升字符串格式化体验,成为现在主流写法。
  • 变量注释name: str = "Alice",为类型提示铺路。
  • 字典保持插入顺序(3.7 正式纳入语言规范)。
  • 3.7
  • dataclasses:用 @dataclass 装饰器自动生成初始化、比较等方法,简化数据类的定义。
  • async/await 成为正式关键字。
  • 3.8
  • 海象运算符 :=:允许在表达式中完成赋值,如 if (n := len(a)) > 10:,省去一行单独赋值。
  • 仅位置参数语法:def f(a, b, /) 表示 a、b 只能通过位置传递。
  • 3.9
  • 字典合并运算符:d1 | d2d1 |= d2,合并多个字典更直观。
  • 字符串方法 removeprefix / removesuffix,替代手动切片。
近期版本特性(Python 3.10 - 3.12)
  • 3.10
  • 结构化模式匹配 match...case:类似其他语言的 switch/case,但更强大,支持解构和条件守卫。这是 Python 在代码可读性方面的重大更新。
  • 更好的错误提示信息:语法错误能精确指出缺失括号或拼写错误的位置。
  • 3.11
  • 性能大幅提升:官方宣称平均加速 10-60%,纯 Python 代码跑得更快。
  • 异常组与 except* 语法,便于处理并发任务中的多个异常。
  • 3.12
  • 更灵活的 f-string 解析:可以在 f-string 内使用引号、多行表达式。
  • 改进的 typing 模块,类型提示语法更简洁(如 type 语句用于类型别名)。
  • 性能持续优化。
如何选择 Python 版本?
  • 新项目:直接选用你开发环境能安装的最新稳定版(目前通常为 3.11 或 3.12),享受性能提升和新语法糖。
  • 维护老项目:看项目的 Python 版本下限。如果团队允许,可以升级到 3.10+,重点是用好模式匹配、海象运算符这类提高可读性的特性。
  • 依赖库兼容性:发布前检查你依赖的第三方库是否支持你所选的 Python 版本,尤其是在使用像 PyTorch、TensorFlow 这种有明确版本要求的库时。

总之,Python 3.x 的演进是在保持语言简洁优雅的前提下,逐步吸收现代编程语言的优秀特性,同时稳步提升性能。开发者只需要持续关注 Python 官方的“What’s New”文档,就能轻松跟上游的步伐。