Python 3.x 各个版本新增的特性
Python 3.x 是 Python 语言的一个重大版本更新,于 2008 年 12 月 3 日发布。Python 3 与 Python 2 语言兼容性有限,因此需要进行代码迁移。
Python 3.x 各个版本新增的特性如下:
Python 3.0 (2008-12-03)
- 整数除法:整数除法不再返回整数,而是返回浮点数。在 Python 2 中,整数除法会返回整数,即使被除数和除数都是整数。在 Python 3 中,整数除法不再返回整数,而是返回浮点数。例如,在 Python 2 中,10 // 3 的值为 3,而在 Python 3 中,10 // 3 的值为 3.3333333333333333。
- 字符串默认为 Unicode 字符串。在 Python 2 中,字符串默认为 ASCII 字符串。在 Python 3 中,字符串默认为 Unicode 字符串。这意味着 Python 3 中的字符串可以包含任何 Unicode 字符。
- 关键字参数不再允许使用位置参数。在 Python 2 中,关键字参数可以使用位置参数。例如,def foo(a, b, **kwargs) 可以调用为 foo(1, 2, c=3)。在 Python 3 中,关键字参数不再允许使用位置参数。例如,def foo(a, b, **kwargs) 只能调用为 foo(1, 2, c=3)。
- 异常处理语法发生了变化。
- 标准库进行了一些改进。Python 3 的标准库进行了一些改进,包括:
- 新增了
collections
模块,提供一些常用的集合数据类型。 - 新增了
datetime
模块,提供日期和时间处理功能。
Python 3.1(2009-06-27)
- 新增了 bytes 和 bytearray 类型。bytes 类型用于表示字节序列,bytearray 类型用于表示可变的字节序列。
- 新增了 datetime 模块。datetime 模块提供了更加丰富的日期和时间处理功能。
- 新增了 collections 模块。collections 模块提供了一些常用的集合数据类型。
Python 3.2(2011-02-20)
- 新增了 contextlib 模块。contextlib 模块提供了一些上下文管理器,用于简化异常处理。
- 新增了 unittest 模块。unittest 模块提供了更完善的单元测试框架。
- 新增了 functools 模块。functools 模块提供了一些函数修饰器,用于简化函数的编写。
Python 3.3(2012-09-29)
- 新增了虚拟环境(venv)。虚拟环境可以用于隔离 Python 环境,防止不同项目之间的依赖冲突。
- 新增了 argparse 模块。argparse 模块提供了更完善的命令行参数解析功能。
- 新增了 typing 模块。typing 模块提供了类型注解功能,用于提高代码的可读性和可维护性。
Python 3.4(2014-05-16)
- 新增了命名空间包。命名空间包可以用于在包中创建命名空间。
- 新增了类型注解。typing 模块新增了一些类型注解,用于提高代码的可读性和可维护性。
- 新增了 asyncio 模块。asyncio 模块提供了异步编程支持。
Python 3.5(2015-09-13)
- 新增了 f-strings 字符串格式化语法。f-strings 字符串格式化语法更加简洁和直观。
- 新增了 walrus 运算符(:=)。walrus 运算符用于在赋值语句中使用变量。
- 新增了 positional-only 参数。positional-only 参数是一种新的参数类型,只能通过位置传参,不能通过关键字传参。
Python 3.6(2016-12-23)
- 新增了 bytes 类型的下划线写法。bytes 类型可以使用下划线来表示多个连续的字节。
- 新增了 secrets 模块。secrets 模块提供了安全的随机数生成功能。
- 新增了 async/await 语法。async/await 语法提供了一种更简洁的异步编程方式。
Python 3.7(2018-06-27)
- 新增了 dataclasses 模块。dataclasses 模块提供了一种简洁的创建数据类的方法。
- 新增了开发模式。开发模式是一种新的模式,可以帮助开发人员更轻松地调试代码。
- 新增了纳秒分辨率的时间对象。datetime 模块新增了 timedelta 类型,用于表示纳秒分辨率的时间间隔。
Python 3.8(2019-10-14)
- 新增了 := 赋值表达式。:= 赋值表达式是一种新的赋值语句,可以用于在表达式的值计算完成后立即将其赋值给变量。
- 新增了 * * 和 / 作为函数参数的关键字参数标记。* * 和 / 可以用于标记函数参数为关键字参数,并且 * * 标记的参数必须在 / 标记的参数之前。
- 新增了 pass 语句的改进。pass 语句可以用于占位符,并且可以使用 pass 语句来指定 for 循环的循环体为空。
- 新增了 multiprocessing 模块的 SharedMemory 类。SharedMemory 类可以用于在多个进程之间共享内存。
Python 3.9(2020-10-05)
- 新增了 match 语句。match 语句是一种新的语句,可以用于模式匹配。
- 新增了 walrus 运算符的改进。walrus 运算符可以用于在表达式的值计算完成后立即将其赋值给变量,并且可以用于赋值给循环变量。
- 新增了类型注解的改进。类型注解可以用于指定函数参数的默认值。
- 新增了 async/await 语法的改进。async/await 语法可以用于在异步函数中使用 yield 语句。
Python 3.10(2021-10-04)
- 新增了尾递归优化。尾递归函数可以被编译器优化为循环,从而提高性能。
- 新增了类型注解的改进。类型注解可以用于指定函数返回值的类型。
- 新增了 async/await 语法的改进。async/await 语法可以用于在异步函数中使用 async for 语句。
Python 3.11(2022-10-04)
- 新增了 pattern matching 语法。pattern matching 语法类似于 switch 语句,用于根据值的类型或模式进行分支。
- 新增了类型注解的改进。类型注解可以用于指定类成员的类型。新增了 Literal 类型和 TypedDict 类型。
- 新增了 async/await 语法的改进。
- 新增了 dataclasses 模块的改进:新增了 field() 函数,用于更方便地定义 dataclasses 类的字段。
- 新增了 typing 模块的改进:新增了 Protocol 类型,用于定义接口。
Python 3.12(2023-10-03)
- 新增了 pattern matching 语法的改进。新增了 match() 函数的 if 子句,用于根据值的类型或模式进行分支。
- 新增了类型注解的改进。新增了 NewType 类型,用于定义新类型。
- 新增了 asyncio 模块的改进:新增了 asyncio.TimeoutError 异常,用于表示超时错误。
- 新增了 logging 模块的改进:新增了 logging.exception() 函数,用于记录严重的异常。
Python 3.13(2024-10-02)
- 新增了 array 类型的改进。新增了 array.array() 函数的 typecode 参数,用于指定 array 类型的元素类型。
- 新增了类型注解的改进。新增了 Union 类型的 |= 运算符,用于合并两个 Union 类型。
- 新增了 asyncio 模块的改进:新增了 asyncio.get_event_loop() 函数,用于获取当前事件循环。
- 新增了 typing 模块的改进:新增了 Protocol 类型的 _field_types 属性,用于获取协议的字段类型
Python 3.x 版本新增的特性不断增多,对 Python 语言的功能和性能进行了显著的改进。这些特性使得 Python 语言更加强大、灵活和易用。