Python 3.6.0 正式版发布附新特性详解
2016-12-25 11:15
911 查看
圣
诞
快
乐
昨天,在知乎专栏发布了一篇文章,简单翻译介绍了一下Python 3.6的发布以及一些新特性的简单说明,今天将会在这些新特性进行一个略详细的解答!
此篇文章详细揭示了Python3.6中的新特性,Python3.6于2016.12.23正式发布,你可以点击进入官方文档查看完整的变化日志。
总结
看点
01
新的语法特性
PEP 498,格式化字符串变量
PEP 515,数字变量使用下划线
PEP 526, 给变量添加注释的语法
PEP 525, 异步生成器
PEP 530,异步推导
看点
02
新的库模板
secrets: PEP 506 – Adding A Secrets Module To The Standard Library.
看点
03
CPython的一些改进
重新实现了字典dict,使其更加紧凑,像是PyPy中的实现。此次重新实现的dict比Python3.5中的字典内存使用减少了20%-25%
定制类的创建使用 new protocol 进行了简化
类中各个属性定义的顺序现在是被保存的 now preserved.
双星号变量**kwargs中的元素的顺序是你传入函数中的元素的顺序
添加了DTrace和SystemTap探测支持。
新的PYTHONMALLOC环境变量现在可用于调试解释器内存分配和访问错误。
看点
04
标准库的重大改进
asyncio模板添加了很多新的功能、重要的可用性、性能改进以及大量的bug,从Python3.6开始 asyncio模板不再是临时的并且API变得更加稳定
一个新的文件系统路径协议file system path protocol已经产生来支持 path-like objects,标准库中所有的文件路径操作已经被更新到使用新的协议
datetime模板现在已经支持 Local Time Disambiguation
typing模板进行了很多的改进
tracemalloc模板进行了大幅度的改进,现在用来为ResourceWarning提供更好的输出、以及为内存分配错误提供更好的诊断。
看点
05
安全性的提高
添加了新的模板secrets以简化使用于管理密码,比如账号认证,令牌等的密码的随机数的生成
在Linux OS中,os.urandom()现在阻塞,直到系统urandom熵池被初始化以增加安全
hashlib和ssl 模板现在已经支持OpenSSL 1.1.0.
ssl 模板中的默认设置和功能现在已经被改进了
模板现在新增了对BLAKE2, SHA-3 and SHAKE的哈希算法以及scrypt()密钥导出函数的支持
重点
新变化
PEP 498, 格式化字符串变量
引入了一种新的字符串字变量:f-strings,与原来的方法str.format()类似。他们包含由大括号括起来的字段,大括号表达式中的变量可以动态的进行赋值,操作会更加的方便。原理上f-strings最后仍然会调用format()来进行格式化。
PEP 515, 数字变量使用下划线
添加了数字中可以使用下划线来提高可读性的能力,当然在数字之间或者任何基本说明之后可以使用单个下划线。但是请注意:不可以在开头结尾或者中间使用多个下划线!
并且上述所说的格式化字符串变量也支持下划线,它会自动的对每一个千位加上一个下划线,有点我们平常金额计数的意思。对于'b','o','x','X'等进制整数类型表示,它将会对每四位之间添加一个下划线。
PEP 526, 给变量添加注释的语法
引入了函数参数类型的注释标准,此PEP向Python添加了用于注释变量类型包含类变量和实例变量的语法,如下。
与函数注释一样,Python解释器不会对变量注释附加任何特定含义,只将它们存储在类或模块的__annotations__属性中。
与静态类型语言中的变量声明相反,注释语法的目标是通过抽象语法树和__annotations__属性为第三方工具和库指定结构化类型元数据的简单方法。
这一步,可以说是借鉴了其他语言的用法,对于个人用户来说,一方面会减少代码的出错率,另一方面增加了写代码时候的复杂度。
PEP 525, 异步生成器
对于异步,我们知道在Python3.5中一个显著的问题是:Python 3.5实现的一个显着的局限性是,不可能在同一个函数体中使用await和yield。现在在Python3.6中,这个限制已经移除了,你可以自由的定义异步生成器了。
新的特性可以使代码更加的快速和简洁,方便多了
PEP 530: 异步推导
添加了在list,set,dict comprehension和generator表达式中使用async的支持
此外,所有comprehensions中都支持await表达式
PEP 487 – 类创建的更简单的定义
现在你可以在不使用元类的情况下自定义子类,新的__init_subclass__类方法将在你每次创建一个新的子类的时候被调用。
不懂元类的,可以到我专栏的之前一篇关于元类详解的文章中去详细了解一下!
描述符的实例现在可以知道所有者类中的描述符的属性名称:
更多更加详细的变化,请移步官方文档!
最后,如果你还没有升级到3.x的赶紧升级起来!
你可以点击这一篇进行升级!
Python3.x基础学习资料整理
那么,你最期待哪些新特性呢?
周六周天可都毁在翻译上了!
赞赏
人赞赏
诞
快
乐
昨天,在知乎专栏发布了一篇文章,简单翻译介绍了一下Python 3.6的发布以及一些新特性的简单说明,今天将会在这些新特性进行一个略详细的解答!
此篇文章详细揭示了Python3.6中的新特性,Python3.6于2016.12.23正式发布,你可以点击进入官方文档查看完整的变化日志。
总结
看点
01
新的语法特性
PEP 498,格式化字符串变量
PEP 515,数字变量使用下划线
PEP 526, 给变量添加注释的语法
PEP 525, 异步生成器
PEP 530,异步推导
看点
02
新的库模板
secrets: PEP 506 – Adding A Secrets Module To The Standard Library.
看点
03
CPython的一些改进
重新实现了字典dict,使其更加紧凑,像是PyPy中的实现。此次重新实现的dict比Python3.5中的字典内存使用减少了20%-25%
定制类的创建使用 new protocol 进行了简化
类中各个属性定义的顺序现在是被保存的 now preserved.
双星号变量**kwargs中的元素的顺序是你传入函数中的元素的顺序
添加了DTrace和SystemTap探测支持。
新的PYTHONMALLOC环境变量现在可用于调试解释器内存分配和访问错误。
看点
04
标准库的重大改进
asyncio模板添加了很多新的功能、重要的可用性、性能改进以及大量的bug,从Python3.6开始 asyncio模板不再是临时的并且API变得更加稳定
一个新的文件系统路径协议file system path protocol已经产生来支持 path-like objects,标准库中所有的文件路径操作已经被更新到使用新的协议
datetime模板现在已经支持 Local Time Disambiguation
typing模板进行了很多的改进
tracemalloc模板进行了大幅度的改进,现在用来为ResourceWarning提供更好的输出、以及为内存分配错误提供更好的诊断。
看点
05
安全性的提高
添加了新的模板secrets以简化使用于管理密码,比如账号认证,令牌等的密码的随机数的生成
在Linux OS中,os.urandom()现在阻塞,直到系统urandom熵池被初始化以增加安全
hashlib和ssl 模板现在已经支持OpenSSL 1.1.0.
ssl 模板中的默认设置和功能现在已经被改进了
模板现在新增了对BLAKE2, SHA-3 and SHAKE的哈希算法以及scrypt()密钥导出函数的支持
重点
新变化
PEP 498, 格式化字符串变量
引入了一种新的字符串字变量:f-strings,与原来的方法str.format()类似。他们包含由大括号括起来的字段,大括号表达式中的变量可以动态的进行赋值,操作会更加的方便。原理上f-strings最后仍然会调用format()来进行格式化。
PEP 515, 数字变量使用下划线
添加了数字中可以使用下划线来提高可读性的能力,当然在数字之间或者任何基本说明之后可以使用单个下划线。但是请注意:不可以在开头结尾或者中间使用多个下划线!
并且上述所说的格式化字符串变量也支持下划线,它会自动的对每一个千位加上一个下划线,有点我们平常金额计数的意思。对于'b','o','x','X'等进制整数类型表示,它将会对每四位之间添加一个下划线。
PEP 526, 给变量添加注释的语法
引入了函数参数类型的注释标准,此PEP向Python添加了用于注释变量类型包含类变量和实例变量的语法,如下。
与函数注释一样,Python解释器不会对变量注释附加任何特定含义,只将它们存储在类或模块的__annotations__属性中。
与静态类型语言中的变量声明相反,注释语法的目标是通过抽象语法树和__annotations__属性为第三方工具和库指定结构化类型元数据的简单方法。
这一步,可以说是借鉴了其他语言的用法,对于个人用户来说,一方面会减少代码的出错率,另一方面增加了写代码时候的复杂度。
PEP 525, 异步生成器
对于异步,我们知道在Python3.5中一个显著的问题是:Python 3.5实现的一个显着的局限性是,不可能在同一个函数体中使用await和yield。现在在Python3.6中,这个限制已经移除了,你可以自由的定义异步生成器了。
新的特性可以使代码更加的快速和简洁,方便多了
PEP 530: 异步推导
添加了在list,set,dict comprehension和generator表达式中使用async的支持
此外,所有comprehensions中都支持await表达式
PEP 487 – 类创建的更简单的定义
现在你可以在不使用元类的情况下自定义子类,新的__init_subclass__类方法将在你每次创建一个新的子类的时候被调用。
不懂元类的,可以到我专栏的之前一篇关于元类详解的文章中去详细了解一下!
描述符的实例现在可以知道所有者类中的描述符的属性名称:
更多更加详细的变化,请移步官方文档!
最后,如果你还没有升级到3.x的赶紧升级起来!
你可以点击这一篇进行升级!
Python3.x基础学习资料整理
那么,你最期待哪些新特性呢?
周六周天可都毁在翻译上了!
赞赏
人赞赏
相关文章推荐
- JAVA 7 正式版发布. 新特性一览表
- Silverlight5正式版发布并提供下载【附下载地址和新特性下载】
- 打包发布Python模块的方法详解
- Visual Studio 2017正式版发布 Mac版新功能特性有哪些
- Android Studio2.3正式版发布,包含一些新特性
- Python 3.0 正式版发布
- 重磅 | OpenStack Queens发布!新特性详解
- Laravel 5.0 发布 新版本特性详解
- Laravel 5.0 发布 新版本特性详解
- 干货 | Android 8.0正式版发布:Android O 新特性和行为变更总结
- Lucene 4.0 正式版发布,亮点特性中文解读
- Python 3.4.0 正式版发布
- Lucene 4.0 正式版发布,亮点特性中文解读[转]
- 发布你的Python模块详解
- Qt 5.4发布,详解Android特性变化
- JAVA 7 正式版发布 新特性一览表
- Django 1.5 正式版发布,支持 Python 3
- Python代码的打包与发布详解
- 【软件周刊】Bootstrap 将不再支持 IE 9;Swoole 2.0 正式版发布,协程特性支持 PHP 7
- Python高级特性详解