1.4.9. Python 3.5(2015/09/13)

新特性和改进

  1. 异步编程:asyncawait 关键字

    • 引入了 asyncawait 关键字,用于简化异步编程。这些关键字使得定义和调用异步函数更加直观和简洁。例如:

      async def fetch_data():
          await some_async_function()
      
  2. 类型提示

    • 添加了对函数参数和返回值进行类型提示的功能,帮助开发者更好地理解代码的输入和输出。

    • 这些标注可在运行时通过常用的 annotations 属性来访问,但是 不会在运行时执行任何类型检查

    • 需要有一个单独的离线版类型检查器 (例如 mypy) 被用来按需执行源代码分析 例如:

      def greeting(name: str) -> str:
          return f"Hello, {name}"
      
  3. PEP 465:矩阵乘法运算符 @

    • 引入了新的矩阵乘法运算符 @,用于执行矩阵乘法操作。例如:

      import numpy as np
      a = np.array([[1, 2], [3, 4]])
      b = np.array([[5, 6], [7, 8]])
      result = a @ b
      
  4. PEP 448:扩展的解包通配符

    • 扩展了 * 可迭代对象解包操作符和 ** 字典解包操作符的允许使用范围

    • 现在将可以在 函数调用 中使用任意数量的解包操作:

    >>> print(*[1], *[2], 3, *[4, 5])
    1 2 3 4 5
    >>> def fn(a, b, c, d):
       print(a, b, c, d)
    >>> fn(**{'a': 1, 'c': 3}, **{'b': 2, 'd': 4})
    1 2 3 4
    
    • 元组、列表、集合与字典表示形式也允许多重解包

    >>> *range(4), 4
    (0, 1, 2, 3, 4)
    >>> [*range(4), 4]
    [0, 1, 2, 3, 4]
    >>> {*range(4), 4, *(5, 6, 7)}
    {0, 1, 2, 3, 4, 5, 6, 7}
    >>> {'x': 1, **{'y': 2}}
    {'x': 1, 'y': 2}
    
  5. PEP 461:二进制序列的格式化

    • 为字节串和字节数组添加了类似于字符串格式化的功能。例如:

    >>> b'Hello %b!' % b'World'
    b'Hello World!'
    >>> b'x=%i y=%f' % (1, 2.5)
    b'x=1 y=2.500000'