Python3.5版本语法方面三点变化
互联网 2015/9/14 责任编辑:lvzhaoyan
Python3.5版本引入了很多新特性。
语法方面的变化主要有三点:
PEP492:支持async/await语法的协程
PEP492极大改进了Python中对异步编程的支持,增加了awaitable对象(可以是协程或者带有__await__()方法的对象)、协程函数、异步迭代和异步上下文管理器等内容。
协程函数用新的asyncdef语法声明:
>>>asyncdefcoro():
...return'spam'
PEP465:新的矩阵相乘运算符:a@b
PEP448:解包操作泛化(UnpackingGeneralizations)
CPython实现的改进:
不再使用.pyo文件,而是引入了一种更灵活的替代机制,.pyc文件可以表示优化和未优化的字节码。优化级别信息可以包含在.pyc文件的名字中。
重新设计了内置和扩展模块的加载机制。
标准库也有重要改进:
collections.OrderedDict现在是用C实现的,速度可以提升4到100倍。
新的os.scandir()函数,支持更快速地遍历目录。
functools.lru_cache()大部分用C重新实现了,带来了更好的性能。
安全方面的改进:
标准库中默认关闭了SSLv3,不过仍然支持手动开启。
HTTPcookie解析更为严格,以防止可能出现的注入攻击。
另外,在10月15~17日的QCon上海2015上,国内著名的Python专家赖勇浩将分享《探索Python3.5中async/await特性的实现》。async/await特性使得Python具备语法级别的协程支持,也让它有了更容易理解和交流的异步编程模型。
那么,这个特性在虚拟机里是如何实现的呢?是否用了什么很特别的机制?跟之前的yield/yieldfrom有何异同?
语法方面的变化主要有三点:
PEP492:支持async/await语法的协程
PEP492极大改进了Python中对异步编程的支持,增加了awaitable对象(可以是协程或者带有__await__()方法的对象)、协程函数、异步迭代和异步上下文管理器等内容。
协程函数用新的asyncdef语法声明:
>>>asyncdefcoro():
...return'spam'
PEP465:新的矩阵相乘运算符:a@b
PEP448:解包操作泛化(UnpackingGeneralizations)
CPython实现的改进:
不再使用.pyo文件,而是引入了一种更灵活的替代机制,.pyc文件可以表示优化和未优化的字节码。优化级别信息可以包含在.pyc文件的名字中。
重新设计了内置和扩展模块的加载机制。
标准库也有重要改进:
collections.OrderedDict现在是用C实现的,速度可以提升4到100倍。
新的os.scandir()函数,支持更快速地遍历目录。
functools.lru_cache()大部分用C重新实现了,带来了更好的性能。
安全方面的改进:
标准库中默认关闭了SSLv3,不过仍然支持手动开启。
HTTPcookie解析更为严格,以防止可能出现的注入攻击。
另外,在10月15~17日的QCon上海2015上,国内著名的Python专家赖勇浩将分享《探索Python3.5中async/await特性的实现》。async/await特性使得Python具备语法级别的协程支持,也让它有了更容易理解和交流的异步编程模型。
那么,这个特性在虚拟机里是如何实现的呢?是否用了什么很特别的机制?跟之前的yield/yieldfrom有何异同?