Python 3.9:
- 基于解析表达式语法(PEG)的新解析器,取代了LL(1)解析器,为编写Python代码提供了更多灵活性。
- 可迭代解包,允许去除嵌套容器。
- 字典合并(
|)和更新(|=)操作符。 - 新的字符串方法,用于移除前缀(
str.removeprefix())和后缀(str.removesuffix())。 - 类型提示增强,包括
types模块中的新标准类型,以支持类型提示(PEP 585)。 - Zoneinfo模块支持IANA时区数据库。
# 合并字典
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
merged_dict = dict1 | dict2 print(merged_dict)
# 输出: {'a': 1, 'b': 3, 'c': 4}
Python 3.10:
- 结构化模式匹配(PEP 634),允许使用新的
match语句匹配复杂的数据模式,类似于其他语言中的switch或case语句。 - traceback中精确且有用的错误信息。
- 新的语法特性:带括号的上下文管理器,能够在使用多个上下文管理器时编写更清晰的代码。
- 新的类型注释特性:现在允许在任何表达式中使用函数类型注释,类型别名不再需要通过类型注释或
NewType来定义。
# match用法
def http_error(status):
match status: case 400: return "Bad request"
case 404: return "Not found"
case 418: return "I'm a teapot"
case _: return "Something's wrong with the internet"
print(http_error(404)) # 输出: Not found
Python 3.11:
- 由于大量性能提升,代码执行速度更快。
- 改善的错误信息提供了更好的上下文和更容易的调试。
- 'Self'类型提示,允许类型检查器标记超类方法未返回子类实例的案例。
- 异常组和except*语法,以同时处理多个异常,在异步代码情况下非常有益。
Python 3.12:
- 每个子解释器一个全局解释器锁(GIL),可能会使得多线程Python程序更好地利用多核CPU。
- 不受垃圾回收影响的永久对象,这在某些情况下可以提高性能。
- 重写装饰器,可以用来确保一个方法覆盖了超类中的方法。
- 泛型类的新类型注释语法,提高了清晰度和易用性。