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

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

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字符

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

现在支持循环导入,包括将子模块绑定到名称的绝对导入

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

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

当使用 -m 开关时, sys.path[0] 现在被急切地扩展为完整的起始目录路径,而不是作为空目录(允许在导入发生时从当前工作目录导入)

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

对内置模块的更改:

asyncio

不胜枚举

gc

新增功能包括 gc.freeze()gc.unfreeze()gc-get_freeze_count

math

添加math.remainder()以实现IEEE 754风格的余数

re

许多整理功能,包括更好地支持对空字符串的分割,以及对编译表达式和匹配对象的复制支持

sys

添加sys.breakpointhook() 。添加 sys.get(/set)_coroutine_origin_tracking_depth()

time

大多数更新是为了支持PEP564的纳秒分辨率,见上文

笔记