Python 3.12 in 2023

Python Release Python 3.12.0 | Python.org

  • f-string 增强。
    • 花括号 {} 内:可以包含担任定界符的引号;可以嵌套多层 f-string;可以换行和加注释;可以包含反斜杠 \ 进行转义。
  • 简化定义泛型的语法。
  • 可以用 type 关键字定义类型别名,如 type Point = tuple[float, float]
  • 在 Python 进程中创建子 Python 解释器时,可以让每个解释器不共享同一个 GIL。

Python 3.11 in 2022

Python Release Python 3.11.0 | Python.org

  • CPython 解释器优化,比 3.10 快 10~60%。
  • 增加 BaseExceptionGroup 和 ExceptionGroup,用于将多个异常打包为一组。需要使用 except* 捕捉。
  • 打印 tracebacks 信息时,可以准确指出引发异常的代码位置。

Python 3.10 in 2021

Python Release Python 3.10.0 | Python.org

1
2
3
4
5
match <expression>
case <pattern>:
<block>
case <pattern>:
<block>
  • | 运算符连接多个类型,表示 Union 类型。
1
isinstance(x, int | str)
  • open() 支持参数 encoding='locale',等价于 encoding=None,表示用当前平台默认编码。

Python 3.9 in 2020

Python Release Python 3.9.0 | Python.org

1
2
def func(x: dict[str, list[int]]):
pass

Python 3.8 in 2019

Python Release Python 3.8.0 | Python.org

  • 增加赋值表达式 :=,用于给表达式中的变量赋值。
  • 增加语法:定义函数时,在正斜杆 / 之前的参数都会被视作位置参数。
  • 在 f 字符串中用 变量= 的格式打印变量的值,方便于调试。

Python 3.7 in 2018

Python Release Python 3.7.0 | Python.org

Python 3.6 in 2016

Python Release Python 3.6.0 | Python.org

  • dict 中的元素会按插入顺序存储。
  • 在数字中插入下划线作为分隔符,提高可读性。
1
2
3
4
>>> 1_000_111_000
1000111000
>>> '{:_}'.format(1000000) # 格式化字符串时也可输出下划线
'1_000_000'
  • 给字符串加上前缀 f 之后,就会执行花括号 {} 内的语句。
  • 给类定义 __init_subclass__() 方法,用于初始化子类。
1
2
3
4
5
6
class TestBase:
subclasses = []

def __init_subclass__(cls, *args, **kwargs):
super().__init_subclass__(*args, **kwargs)
cls.subclasses.append(cls)
  • 增加标准库 secrets,用于生成安全的随机数。

Python 3.5 in 2015

Python Release Python 3.5.0 | Python.org

  • 扩展了迭代拆包运算符 *、字典拆包运算符 ** 的语法。
  • 增加关键字 asyncawait,用于定义协程。
  • 增加类型注释(type annotations)。
    • 对于函数,可以用冒号 : 添加形参的注释,用 -> 添加返回值的注释。这些注释会存储在函数的 __annotations__ 属性中。
    • 对于变量,可以用冒号 : 添加注释。
  • 增加标准库 typing ,定义了一些类型,常用于类型注释。
  • 增加标准库 zipapp ,用于将 Python 脚本打包成可执行的归档文件,扩展名为 .pyz

Python 3.4 in 2014

Python Release Python 3.4.0 | Python.org

Python 3.0 in 2008

Python 3.0 Release | Python.org

Python 2.7 in 2010

Python Release Python 2.7.0 | Python.org

这是 Python 2 的最后一个子版本。