Python 3.7

新特性:

特性

状态

PEP 538

将遗留的 C 区域设置强制转换为基于 UTF-8 的区域设置

PEP 539

CPython 中线程局部存储的新 C-API

PEP 540

UTF-8 模式

PEP 552

确定性 pyc

PEP 553

内置 breakpoint()

PEP 557

数据类

PEP 560

对 typing 模块和泛型类型的核心支持

PEP 562

模块 __getattr____dir__

部分实现

PEP 563

注解的延迟求值

PEP 564

纳秒级分辨率的时间函数

部分实现 [1]

PEP 565

__main__ 中显示 DeprecationWarning

PEP 567

上下文变量

其他语言变更:

asyncawait 现在是保留关键字

已完成

dict 对象必须保留插入顺序

现在可以向函数传递超过 255 个参数;函数现在可以拥有超过 255 个形参

bytes.fromhex()bytearray.fromhex() 现在会忽略所有 ASCII 空白字符,而不仅仅是空格

strbytesbytearray 新增了对 isascii() 方法的支持,可用于检测字符串或字节是否仅包含 ASCII 字符

from ... import ... 失败时,ImportError 现在会显示模块名和模块的 __file__ 路径

现在支持涉及绝对导入并将子模块绑定到某个名称的循环导入

object.__format__(x, '') 现在等价于 str(x),而不是 format(str(self), '')

为了更好地支持动态创建栈回溯,types.TracebackType 现在可以从 Python 代码实例化,并且回溯上的 tb_next 属性现在可写

使用 -m 开关时,sys.path[0] 现在会被立即展开为完整的起始目录路径,而不再保留为空目录(从而允许在 import 发生时从当前工作目录导入)

新的 -X importtime 选项或 PYTHONPROFILEIMPORTTIME 环境变量可用于显示每个模块导入的耗时

内置模块的变更:

asyncio

太多,无法一一列举

gc

新特性包括 gc.freeze()gc.unfreeze()gc-get_freeze_count

math

新增了 math.remainder() 以实现 IEEE 754 风格的求余

re

若干整理性的特性,包括更好地支持在空字符串上分割,以及对已编译表达式和 match 对象的复制支持

sys

新增了 sys.breakpointhook()。新增了 sys.get(/set)_coroutine_origin_tracking_depth()

time

主要是为支持 PEP564 中的纳秒级分辨率而做的更新,见上文

注意事项