Python3.6-3.10发布时间及主要新增功能
Python 3.6
Python 3.6 发布于2016年12月23日。
格式化的字符串文字fstring
格式化字符串字面值带有 'f' 前缀并且类似于 str.format() 所接受的格式字符串。 其中包含由花括号包围的替换字段。 替换字段属于表达式,它们会在运行时被求值,然后使用 format() 协议进行格式化:
>>> name = "Fred"
>>> f"He said his name is {name}."
'He said his name is Fred.'
>>> width = 10
>>> precision = 4
>>> value = decimal.Decimal("12.34567")
>>> f"result: {value:{width}.{precision}}" # nested fields
'result: 12.35'
数字文字中的下划线
增加了在数字字面值中使用下划线的能力以改善可读性。 例如:
>>> 1_000_000_000_000_000
1000000000000000
>>> 0x_FF_FF_FF_FF
4294967295
Python 3.7
Python 3.7 于 2018 年 6 月 27 日发布。
Python 3.8
Python 3.8已于2019年10月14日发布。
赋值表达式
新增的语法 := 可在表达式内部为变量赋值。 它被昵称为“海象运算符”因为它很像是海象的眼睛和长牙。
if (n := len(a)) > 10:
print(f"List is too long ({n} elements, expected <= 10)")
仅限位置形参
在下面的例子中,形参 a 和 b 为仅限位置形参,c 或 d 可以是位置形参或关键字形参,而 e 或 f 要求为关键字形参:
def f(a, b, /, c, d, *, e, f):
print(a, b, c, d, e, f)
f-字符串支持 = 用于自动记录表达式和调试文档
增加 = 说明符用于 f-string。 形式为 f'{expr=}' 的 f-字符串将扩展表示为表达式文本,加一个等于号,再加表达式的求值结果。
Python 3.9
Python 3.9 发布于 2020 年 10 月 5 日。
字典合并与更新运算符 | |=
>>> x = {"key1": "value1 from x", "key2": "value2 from x"}
>>> y = {"key2": "value2 from y", "key3": "value3 from y"}
>>> x | y
{'key1': 'value1 from x', 'key2': 'value2 from y', 'key3': 'value3 from y'}
>>> y | x
{'key2': 'value2 from x', 'key3': 'value3 from y', 'key1': 'value1 from x'}
新增用于移除前缀和后缀的字符串方法
str.removeprefix(prefix)
str.removesuffix(suffix)
用于方便地从字符串移除不需要的前缀或后缀。
新增模块
zoneinfo
zoneinfo 模块为标准库引入了 IANA 时区数据库。 它添加了 zoneinfo.ZoneInfo,这是一个基于系统时区数据的实体 datetime.tzinfo 实现。
graphlib
添加了新的 graphlib 模块,其中包含 graphlib.TopologicalSorter 类来提供图的拓扑排序功能。 (由 Pablo Galindo, Tim Peters 和 Larry Hastings 在 bpo-17005 中贡献。)
Python 3.10
Python 3.10 发布于 2021 年 10 月 14 日
结构化模式匹配match
增加了采用模式加上相应动作的 match 语句 和 case 语句 的形式的结构化模式匹配。 模式由序列、映射、基本数据类型以及类实例构成。 模式匹配使得程序能够从复杂的数据类型中提取信息、根据数据结构实现分支,并基于不同的数据形式应用特定的动作。
def http_error(status):
match status:
case 400:
return "Bad request"
case 401 | 402 |403:
return "Not allowed"
case 404:
return "Not found"
case _:
return "Something's wrong with the internet"