Python3.9、Python3.10、Python3.11和Python3.12的发展历程和区别

文章目录

  • 1. Python 3.9(2020年10月发布)
  • 主要新特性
  • 2. Python 3.10(2021年10月发布)
  • 主要新特性:
  • 3. Python 3.11(2022年10月发布)
  • 主要新特性
  • 4. Python 3.12(2023年10月发布)
  • 主要新特性
  • 总结对比:
  • 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.9 Python 3.10 Python 3.11 Python 3.12
    字典合并运算符
    结构化模式匹配
    性能提升
    类型提示改进
    matchcase
    异常链改进
    Self 类型提示
    zoneinfo 时区支持
    新的字节码优化

    作者:Ceeeeen

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python3.9、Python3.10、Python3.11和Python3.12的发展历程和区别

    发表回复