先附上官方英文文档地址 : https://docs.python.org/3/whatsnew/3.6.html
3.6 新特性
新语法特性:
新的格式化字符串方式: f-strings. 在格式化字符串前加入前缀 ‘f’ 或 ‘F’ 等同于 str.format()
1 2 3 4 5 6 7 8 9 10 11 12 > name = 'GrayLand' > b = f'My name is {name}.' 'My name is GrayLand.' > f'My name is {name!r}.' # !r == repr(), name!r = repr(name) > # !r = repr(), !a = ascii(), !s = str() "My name is 'GrayLand'." > width = 10 > precision = 4 > value = decimal.Decimal("12.3456789") #import decimal > f"result:{value:{width}.{precision}}" 'result: 12.35'
1 2 > 1_000_000_000 1000000000
变量增加注释, 只有在 class 中才有 __annotations__ 属性.
1 2 3 4 5 6 7 8 9 # a: [int] = [1,2,3,4] # b: [str, int] = {'age':123} # c: str = 'grayland' >>> class Person: ... info:[str,str] = [] ... >>> Person.__annotations__ {'info': [<class 'str'>, <class 'str'>]}
1 2 3 4 5 async def ticker(delay, to): """Yield numbers from 0 to *to* every *delay* seconds.""" for i in range(to): yield i await asyncio.sleep(delay)
asynchronous comprehensions
新的库:
CPython 实现增强:
dict 重写实现方法, 相比 python3.5 内存减少20%~25%.
简化自定义类的创建语法. 自定义一个子类的时候可以不使用 __metaclass__ , 一个类被继承的时候,自动调用 __init_subclass__.
类属性定义顺序现在是被保护的.
**kwargs 中排列的元素和调用函数传入的对应关键字参数一致.
DTrace 和 SystemTap 探索支持.
新的 PYTHONMALLOC 环境变量可以用于内存申请和访问的诊断.