Python 3.7 有什么新变化 - 其他语言更改新模块
其他语言更改
await 表达式和包含 async for 子句的推导在格式化字符串文本中的表达式中是非法的,因为 实现。在Python 3.7中,这个限制被取消了。
现在可以将超过 255 个参数传递给函数,并且函数可以 现在有超过 255 个参数。(由Serhiy Storchaka在bpo-12844和bpo-18896中提供。
bytes.fromhex() 和 bytearray.fromhex() 现在忽略所有 ASCII 空格,而不仅仅是空格。(由Robert Xiao在bpo-28927中提供。
str、bytes 和 bytearray 获得了对 新的 Isascii() 方法,可用于 测试字符串或字节是否仅包含 ASCII 字符。 (由INADA Naoki在bpo-32677中提供。
ImportError 现在在失败时显示模块名称和模块路径。(由Matthias Bussonnier在bpo-29546中提供。__file__from … import …
循环导入涉及将子模块绑定到的绝对导入 现在支持名称。 (由Serhiy Storchaka在bpo-30024中提供。
object.format(x, ‘’)现在等效于 而不是 。 (由Serhiy Storchaka在bpo-28974中提供。str(x)format(str(self), ‘’)
为了更好地支持堆栈跟踪、类型的动态创建。TracebackType 现在可以从 Python 代码实例化,并且 回溯上的属性现在是 写。 (由Nathaniel J. Smith在bpo-30579中提供。tb_next
使用 -m 开关时,现在急切地扩展 到完整的起始目录路径,而不是留空 目录(允许从当前工作目录导入 导入发生的时间) (由 Nick Coghlan 在 bpo-33053 中提供。sys.path[0]
新的 -X 选项或 PYTHONPROFILEIMPORTTIME 环境变量可用于显示 每个模块导入的计时。 (由 Victor Stinner 在 bpo-31415 中提供。importtime
新模块
上下文变量
新的 contextvars 模块和一组新的 C API 引入了 支持上下文变量。上下文变量在概念上是 类似于线程局部变量。与 TLS 不同,上下文变量 正确支持异步代码。
异步和十进制模块已更新为 使用 并支持开箱即用的上下文变量。特别是活跃的 十进制上下文现在存储在上下文变量中,这允许 十进制运算,用于在异步代码中使用正确的上下文。
参见
PEP 567 – 上下文变量
PEP由Yury Selivanov编写和实施
数据类
新的 dataclass() 装饰器提供了一种声明数据类的方法。数据类使用类变量描述其属性 附注。它的构造函数和其他魔术方法,如__repr__()、eq()和__hash__()是自动生成的。
例:
@dataclass
class Point:
x: float
y: float
z: float = 0.0
p = Point(1.5, 2.5)
print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"
参见
PEP 557 – 数据类
PEP由Eric V. Smith编写和实施
importlib.resources
新的importlib.resources模块提供了几个新的API和一个 新的 ABC,用于访问、打开和读取包内的资源。 资源与包中的文件大致相似,但它们不需要 是物理文件系统上的实际文件。模块加载器可以提供返回的函数 一个importlib.abc.ResourceReader实例来支持这一点 新的 API。内置文件路径加载程序和 zip 文件加载程序都支持此功能。get_resource_reader()
由Barry Warsaw和Brett Cannon在bpo-32248中提供。
另请参阅importlib_resources – 早期 Python 版本的 PyPI 向后移植。