# 本文总结了 Python 3.5 到 3.14 各版本的主要语言特性和改进。
本文总结了 Python 3.5 到 3.14 各版本的主要语言特性和改进。
Python 3.5 (2015年9月)
主要特性
-
类型提示 (Type Hints)
def greeting(name: str) -> str: return 'Hello ' + name -
PEP 492 - 异步 IO 支持
async和await关键字- 异步生成器和协程
-
PEP 448 - 扩展的可迭代解包
a, *b, c = [1, 2, 3, 4, 5] # a=1, b=[2,3,4], c=5 -
新增标准库模块
typing: 提供类型提示支持asyncio: 异步 IO 框架
-
其他改进
@运算符用于矩阵乘法os.scandir()用于高效目录遍历
Python 3.6 (2016年12月)
主要特性
-
格式化字符串字面值 (f-strings)
name = "World" print(f"Hello, {name}!") -
PEP 526 - 变量注解
x: int = 10 y: List[str] = [] -
PEP 515 - 数字字面值的下划线分隔符
large_number = 1_000_000_000 -
异步生成器和异步推导式
async def async_gen(): for i in range(5): yield i result = [i async for i in async_gen()] -
新的标准库模块
secrets: 生成密码学安全的随机数
-
语法改进
- 字典可以保持插入顺序
- 变量注解允许在函数注释中使用
->
Python 3.7 (2018年6月)
主要特性
-
数据类 (Data Classes)
from dataclasses import dataclass @dataclass class Point: x: float y: float -
PEP 563 - 延迟评估的类型注解
- 通过
from __future__ import annotations实现 - 类型注解在运行时不会被求值
- 通过
-
上下文变量 (Context Variables)
- 用于在异步代码中替代线程局部存储
-
asyncio 改进
asyncio.run()函数简化异步程序运行asyncio.create_task()创建任务
-
语法改进
- 更简洁的异常链语法:
raise new_exc from old_exc
- 更简洁的异常链语法:
Python 3.8 (2019年10月)
主要特性
-
赋值表达式 (海象运算符 :=)
if (n := len(a)) > 10: print(f"List is too long ({n} elements, expected <= 10)") -
PEP 572 - 位置参数只标记
def f(a, b, /, c, d, *, e, f): # a, b 只能按位置传递 # e, f 只能按关键字传递 -
f-strings 改进
- 支持
f"{var=}"语法,自动包含变量名和值
- 支持
-
新的标准库模块
importlib.metadata: 访问包元数据typing.TypedDict: 类型化字典
-
性能改进
- 速度提升约 10-15%
pickle序列化/反序列化速度提升
Python 3.9 (2020年10月)
主要特性
-
字典合并与更新运算符
d1 = {'a': 1} d2 = {'b': 2} d3 = d1 | d2 # {'a': 1, 'b': 2} d1 |= d2 # d1 现在是 {'a': 1, 'b': 2} -
PEP 584 - 类型提示改进
list[str]替代List[str]dict[str, int]替代Dict[str, int]
-
新的字符串方法
str.removeprefix(): 移除前缀str.removesuffix(): 移除后缀
-
时区支持改进
zoneinfo模块提供 IANA 时区数据库支持
-
其他改进
- 放宽了装饰器语法限制
math.lcm()和math.gcd()函数
Python 3.10 (2021年10月)
主要特性
-
结构模式匹配 (Structural Pattern Matching)
match status: case 200: print("OK") case 404: print("Not Found") case _: print("Other") -
更精确的类型提示
Union[str, int]可简化为str | intOptional[str]可简化为str | None
-
PEP 647 - 用户定义的类型守卫
def is_str_list(val: list[object]) -> TypeGuard[list[str]]: return all(isinstance(x, str) for x in val) -
改进的错误信息
- 更精确的语法错误定位
- 更友好的错误提示
Python 3.11 (2022年10月)
主要特性
-
显著的性能提升
- 速度提升约 10-60%
- 平均比 Python 3.10 快 25%
-
异常改进
- 异常回溯信息更详细
- 显示异常发生的精确位置
-
PEP 673 - Self 类型
class Person: def set_name(self, name: str) -> Self: self.name = name return self -
异步迭代器支持
async for支持异步迭代器
-
新的标准库功能
tomllib: 解析 TOML 文件dataclasses: 支持kw_only参数
Python 3.12 (2023年10月)
主要特性
-
更简洁的类型注解语法
def greet(name: str, /, *, greeting: str = "Hello") -> str: return f"{greeting}, {name}!" -
PEP 695 - 类型变量注解
type Point[T] = tuple[T, T] def scale[ScaleT](p: Point[ScaleT], factor: ScaleT) -> Point[ScaleT]: return (p[0] * factor, p[1] * factor) -
PEP 701 - f-strings 语法改进
- 支持更复杂的表达式和嵌套
-
性能改进
- 继续优化速度
- 减少内存使用
-
标准库增强
pathlib改进json模块性能提升
Python 3.13 (预计2024年10月)
主要特性(预发布版本)
-
进一步的性能优化
- 持续改进解释器速度
- 内存使用优化
-
语法改进
- 可能会有更多类型系统增强
-
标准库更新
- 模块重组和改进
- 移除过时的功能
-
异步编程增强
- 继续改进 asyncio 模块
Python 3.14
预期特性
-
PEP 722 - 单文件脚本的依赖声明
# Requires: requests>=2.25.1, numpy>=1.20.0 import requests, numpy- 允许在Python脚本顶部直接声明依赖
- 简化小型项目的依赖管理
-
PEP 735 - 依赖组规范
# 在pyproject.toml中定义依赖组 [dependency-groups] dev = ["pytest", "black", "mypy"] docs = ["sphinx", "sphinx-rtd-theme"] -
类型系统进一步增强
- 更精确的泛型类型检查
- 改进的类型推断机制
- 更好的协议(Protocol)支持
-
性能持续优化
- 继续改进解释器速度
- 优化内存使用和垃圾回收
- 可能引入新的JIT编译技术
-
标准库现代化
- 移除过时的模块和功能
- 改进现有模块的API和性能
- 可能引入新的实用模块
-
语法改进
- 可能的语法糖简化
- 更一致的语言行为
- 改进的错误处理机制
-
异步编程增强
- 继续改进asyncio模块
- 更好的异步上下文管理器支持
- 优化异步性能
-
开发体验改进
- 更友好的错误信息
- 改进的调试支持
- 更好的性能分析工具

浙公网安备 33010602011771号