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()密钥导出函数的支持