Python3.9、Python3.10、Python3.11和Python3.12的发展历程和区别
Python的发展阶段的不同特点
文章目录
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
中的Iterable
和MutableMapping
。
2. Python 3.10(2021年10月发布)
主要新特性:
-
引入了
match
和case
语句,实现了类似于其他语言中的 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 ): # 处理文件
-
TypeGuard
:typing
模块引入了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)
-
match
与case
语句的新语法引入:允许在表达式中使用模式匹配进行更精确的检查。
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
异常进行了改进,使得对某些类型错误的提示更加精确,帮助开发者更容易理解错误的根本原因。 -
对
async
和await
语法进行了进一步优化,使得异步编程变得更加高效。 -
Python 3.12 引入了更多的类型检查功能,包括对
typing
模块的新更新和功能的支持。literal types
现在更加灵活,允许支持更广泛的类型检查。
-
Python 3.12 对 Python 解释器和虚拟机进行了一些重构,进一步提高了性能。
总结对比:
特性 | Python 3.9 | Python 3.10 | Python 3.11 | Python 3.12 |
---|---|---|---|---|
字典合并运算符 | ✅ | |||
结构化模式匹配 | ✅ | |||
性能提升 | ✅ | ✅ | ||
类型提示改进 | ✅ | ✅ | ✅ | ✅ |
match 和 case | ✅ | |||
异常链改进 | ✅ | |||
Self 类型提示 | ✅ | ✅ | ||
zoneinfo 时区支持 | ✅ | |||
新的字节码优化 | ✅ |
更多推荐
所有评论(0)