1.4.7. Python 3.7(2018/06/27)

新特性和改进

  1. 延迟的标注求值

    • 它将在 Python 3.10 中成为默认行为。

新的库模块

  1. 数据类 (Data Classes)-@dataclass

    • 提供了一种声明 数据类 的方式

    • 它的构造器和其他魔术方法例如 repr(), eq() 以及 hash() 会自动地生成。

    • 引入了用于定义仅包含数据的类的简化语法,通过装饰器 @dataclass 实现。例如:

      from dataclasses import dataclass
      @dataclass
      class Point:
          x: float
          y: float
      p = Point(1.5, 2.5)
      print(p)
      输出:
      Point(x=1.5, y=2.5)
      
  2. 上下文变量 (Context Variables)-contextvars模块

    • 引入了 contextvars 模块,允许在异步代码中使用上下文变量。例如:

      import asyncio
      from contextvars import ContextVar
      
      var = ContextVar('var', default='default_value')
      
      async def main():
          print(var.get())
          var.set('new_value')
          await asyncio.sleep(1)
          print(var.get())
      
      asyncio.run(main())
      

标准库中的重大改进

  1. asyncio 模块获得了许多新的特性、可用性和 性能提升

    • 重要的改变包括:

      • 引入了 asyncio.run() 函数作为运行异步代码的新入口点,简化了异步程序的启动过程。

  2. time 模块现在提供 纳秒级精度函数 的支持