Python正接近其下一个重要里程碑3.6版。预计将于12月16日发布,Python 3.6带来了许多新功能,包括更快,更紧凑的字典,改进的功能asyncio,新的文件系统路径协议等等。
Python 3.6引入了对该dict类型的改进,与Python 3.5相比,该类型将内存使用量减少了20%。这是通过使用类似于PyPy的新表示法来完成的,并且已经证明可以提高垃圾回收的性能。
有了新的Python方法,新的Python版本还使得自定义子类的创建变得更加容易,__init_subclass__每当创建子类时,都会在基类上调用新的类方法:
class PluginBase:
subclasses = []
def __init_subclass__(cls
super().__init_subclass__(**kwargs)
cls.subclasses.append(cls)
class Plugin1(PluginBase):
pass
class Plugin2(PluginBase):
pass
可以将这种新机制视为对基类创建自定义的现有元类机制的一种更易于使用的替代方法。
在标准库方面,有几个改进的模块或新模块值得一提:该asyncio模块不再是临时的,其API被认为是稳定的,而新secrets模块旨在提供一种可靠地生成加密性强的伪随机值的方法,例如与用于处理帐户身份验证,令牌等的模块相同。此外,支持类型提示规范的键入模块已声明为稳定。
Python 3.6中的其他新功能包括:
通过格式化的字符串文字进行文字字符串插值,如以下示例所示:
>>> name = "Fred"
>>> f"He said his name is {name}."
'He said his name is Fred.'
>>> width = 10
>>> precision = 4
>>> value = decimal.Decimal("12.34567")
>>> f"result: {value:{width}.{precision}}" # nested fields
'result: 12.35'
在数字文字下划线,这使得可以编写:
>>> 1_000_000_000_000_000
1000000000000000
>>> 0x_FF_FF_FF_FF
4294967295
异步生成器,通过消除在同一函数体中不能使用的约束await而成为async可能:
async def ticker(delay
"""Yield numbers from 0 to *to* every *delay* seconds."""
for i in range(to):
yield i
await asyncio.sleep(delay)
异步理解,如以下示例所示:
result = [i async for i in aiter() if i % 2]
您可以在新文档中阅读Python 3.6中新功能和改进功能的完整列表。

关注 CDA人工智能学院 ,回复“录播”获取更多人工智能精选直播视频!


雷达卡



京公网安备 11010802022788号







