python3.6更新日志

Python3.6在2016.12.23正式发布,Python3.6中主要的变化如下:

新的语法特性

  • PEP 498, 格式化字符串变量.
  • PEP 515, 数字变量使用下划线.
  • PEP 526, 给变量添加注释的语法.
  • PEP 525, 异步生成器.
  • PEP 530: 异步推导.

新的库模板

  • secrets: PEP 506 – 为标准库添加一个安全模块

CPython的一些改进

  • 重新实现了字典dict,使其更加紧凑,像是PyPy中的实现。此次重新实现的dict比Python3.5中的字典内存使用减少了20%-25%
  • 定制类的创建使用 new protocol 进行了简化
  • 类中各个属性定义的顺序现在是被保存的.
  • 双星号变量**kwargs中的元素的顺序是你传入函数中的元素的顺序
  • 添加了DTrace和SystemTap探测支持。
  • 新的PYTHONMALLOC环境变量现在可用于调试解释器内存分配和访问错误。

标准库的重大改进

  • asyncio模板添加了很多新的功能、重要的可用性、性能改进以及大量的bug,从Python3.6开始 asyncio模板不再是临时的并且API变得更加稳定
  • 一个新的文件系统路径协议file system path protocol已经产生来支持 path-like objects,标准库中所有的文件路径操作已经被更新到使用新的协议
  • datetime模板现在已经支持 Local Time Disambiguation
  • typing模板进行了很多的改进
  • tracemalloc模板进行了大幅度的改进,现在用来为ResourceWarning提供更好的输出、以及为内存分配错误提供更好的诊断。

安全性的提高

  • 添加了新的模板secrets以简化使用于管理密码,比如账号认证,令牌等的密码的随机数的生成
  • 在Linux OS中,os.urandom()现在阻塞,直到系统urandom熵池被初始化以增加安全
  • hashlib和ssl 模板现在已经支持OpenSSL 1.1.0.
  • ssl 模板中的默认设置和功能现在已经被改进了
  • 模板现在新增了对BLAKE2, SHA-3 and SHAKE的哈希算法以及scrypt()密钥导出函数的支持