1.4.8. Python3.6(2016/12/23)

新特性和改进

  1. 格式化字符串字面量 (f-strings)

    • 引入了一种新的字符串格式化语法,允许在字符串字面量中嵌入表达式。例如:

      name = "Alice"
      greeting = f"Hello, {name}!"
      print(greeting)  # 输出: Hello, Alice!
      
      width = 10
      precision = 4
      value = decimal.Decimal("12.34567")
      f"result: {value:{width}.{precision}}"  # nested fields
      'result:      12.35'
      
  2. 数字字面量中的下划线

    • 数字字面量现在可以包含下划线以提高可读性。例如:

      one_million = 1_000_000
      pi = 3.14_15_92
      
    • 字符串格式化 微语言现在也支持以 ‘_’ 选项

      '{:_}'.format(1000000)
      '1_000_000'
      '{:_x}'.format(0xFFFFFFFF)
      'ffff_ffff'
      
  3. 变量标注的语法

    • 添加了对变量标注的支持,允许在声明变量时指定其类型。例如:

      age: int = 25
      name: str = "Bob"
      
    • 与函数标注一样,Python 解释器不会为变量标注附加任何特殊含义,仅会将其保存在类或模块的 annotations 属性中

    • 与静态类型语法的变量声明不同,标注语法的目的是通过抽象语法树和 annotations 属性提供一个简单方式来为第三方工具和库指定结构化类型元数据

  4. 异步推导式和异步生成器

    • 引入了对异步推导式和异步生成器的支持。例如:

      async def async_function():
          result = [i async for i in async_generator()]
          return result
      

新的库模块

  1. 新的 secrets 模块

    • 引入了 secrets 模块,用于生成加密安全的随机数和字节序列。

    • 简化适用于密码管理的高加密强度伪随机数的生成,例如账户验证、安全凭据等场景。

参考

  • https://docs.python.org/zh-cn/3/whatsnew/3.6.html