1. Python 3.9(2020年10月发布)

主要新特性

  • 引入了新的字典运算符 ||=,简化了字典的合并和更新操作。

    # 合并字典
    dict1 = {"a": 1, "b": 2}
    dict2 = {"b": 3, "c": 4}
    merged = dict1 | dict2  # {'a': 1, 'b': 3, 'c': 4}
    
    # 更新字典
    dict1 |= dict2  # dict1 becomes {'a': 1, 'b': 3, 'c': 4}
    
  • 移除 collections.OrderedDict 中的 keys()values()items() 方法的顺序保证,提高了性能。

  • 允许使用 list[int]dict[str, int] 等简化的类型注解。

    my_list: list[int] = [1, 2, 3]
    my_dict: dict[str, int] = {"key": 10}
    
  • zoneinfo 模块:引入了 zoneinfo 模块,提供了时区支持,允许你使用 IANA 时区数据库来处理时区转换。

    from zoneinfo import ZoneInfo
    import datetime
    dt = datetime.datetime(2021, 1, 1, tzinfo=ZoneInfo("Asia/Shanghai"))
    
  • 移除了某些过时的库和功能,如 collections 中的 IterableMutableMapping


2. Python 3.10(2021年10月发布)

主要新特性:

  • 引入了 matchcase 语句,实现了类似于其他语言中的 switch-case 结构,但功能更强大,支持更复杂的匹配模式。

    def handle_command(command):
        match command:
            case ["quit"]:
                print("Quit command")
            case ["load", filename]:
                print(f"Loading {filename}")
            case _:
                print("Unknown command")
    
  • Python 3.10 引入了更详细和有用的错误消息,帮助开发者更容易定位问题。

  • parenthesized 上下文管理器:支持在 with 语句中使用多个上下文管理器时,可以用括号来分隔它们。

    with (
        open('file1.txt') as f1,
        open('file2.txt') as f2
    ):
        # 处理文件
    
  • TypeGuardtyping 模块引入了 TypeGuard,这是一个新的类型提示功能,帮助开发者表示某些函数的返回值依赖于输入参数的类型。

  • 允许使用 isinstance 来检查类型参数。

    from typing import TypeVar, Type
    
    T = TypeVar("T", bound=Type)
    def check_type(obj: object, cls: Type[T]) -> bool:
        return isinstance(obj, cls)
    
  • matchcase 语句的新语法引入:允许在表达式中使用模式匹配进行更精确的检查。


3. Python 3.11(2022年10月发布)

主要新特性

  • Python 3.11 引入了大量的性能改进,官方称其为“史上最快的 Python 版本”,通过优化解释器、字节码等提高了执行效率。

    • 根据官方基准,Python 3.11 的性能大约比 3.10 快了 10-60%
  • Python 3.11 对异常链的处理进行了改进,可以更清晰地查看多次异常抛出的堆栈信息。

    try:
        1 / 0
    except ZeroDivisionError as e:
        raise ValueError("Invalid operation") from e
    
  • 增强了类型提示的严格性和语法支持,特别是在函数签名、变量和方法的注释方面。

  • f-string 在 3.11 中变得更高效,减少了内存消耗。

  • 引入了新的 __frozen__ 方法来优化对象实例的创建,降低内存开销。

  • 引入了 Self 类型提示,允许方法返回类型指定为类本身。

    class MyClass:
        def set_value(self, value: int) -> Self:
            self.value = value
            return self
    

4. Python 3.12(2023年10月发布)

主要新特性

  • Python 3.12 引入了更好的模块加载机制,支持对包的软链接操作,特别是针对开发和调试有显著提升。

  • 通过进一步优化字节码和减少代码的执行时间,使得 3.12 在执行效率方面比 3.11 还要更快。

  • Python 3.12 对 TypeError 异常进行了改进,使得对某些类型错误的提示更加精确,帮助开发者更容易理解错误的根本原因。

  • asyncawait 语法进行了进一步优化,使得异步编程变得更加高效。

  • Python 3.12 引入了更多的类型检查功能,包括对 typing 模块的新更新和功能的支持。

    • literal types 现在更加灵活,允许支持更广泛的类型检查。
  • Python 3.12 对 Python 解释器和虚拟机进行了一些重构,进一步提高了性能。


总结对比:

特性Python 3.9Python 3.10Python 3.11Python 3.12
字典合并运算符
结构化模式匹配
性能提升
类型提示改进
matchcase
异常链改进
Self 类型提示
zoneinfo 时区支持
新的字节码优化
Logo

欢迎加入西安开发者社区!我们致力于为西安地区的开发者提供学习、合作和成长的机会。参与我们的活动,与专家分享最新技术趋势,解决挑战,探索创新。加入我们,共同打造技术社区!

更多推荐