依照python官网上的方案,Python3.6最新版本期待在2016-12-16号发布,也就是这周五。从上年的5月份刚开始,Python3.6版本就早已动手能力开发设计了,期内也时断时续的发布了4个Alpha版,4个Beta版,及其一个Candidate版本。

做为一个Python发烧友,很希望新版本的发布,也期待能第一时间尝试一下新特性。文中就依据Python官网文章内容What's New In Python 3.6,简易详细介绍下Python3.6中的一些新特性。

假如你要尝试Python3.6,又不愿毁坏该设备的Python自然环境,提议应用Docker。假如不容易应用Docker,能看下这儿  /article/94198.htm

新的英语的语法特性

1、恢复出厂设置字符串数组(Formatted string literals)

即在一般字符串数组前加上 f 或 F 作为前缀,其实际效果类似str.format()。例如

name = "Fred"
print(f"He said his name is {name}.") # 'He said his name is Fred.'

其实际效果等同于:

print("He said his name is {name}.".format(**locals()))

除此之外,此特性还适用嵌套循环字段名,例如:

width = 10
precision = 4
value = decimal.Decimal("12.34567")
print(f"result: {value:{width}.{precision}}") #'result:   12.35'

2、自变量申明英语的语法(variable annotations)

即从Python3.5刚开始就会有的Typehints。在Python3.5中,是那么应用的:

from typing import List

def test(a: List[int], b: int) -> int:
  return a[0]   b

print(test([3, 1], 2))

这儿的语法检查只在在线编辑器(例如Pycharm)中造成,在具体的应用中,并不开展严苛查验。

在Python3.6中,引进了新的英语的语法:

from typing import List, Dict

primes: List[int] = []
captain: str  # 这时沒有初值

class Starship:
  stats: Dict[str, int] = {}

3、数据的下横线书写(Underscores in Numeric Literals)

即容许在数据中应用下横线,以提升 多名数据的易读性。

a = 1_000_000_000_000_000    # 1000000000000000
b = 0x_FF_FF_FF_FF       # 4294967295

此外,“字符串数组恢复出厂设置”也适用“_”选择项,以复印出更最易读的数据字符串数组:

'{:_}'.format(1000000)     # '1_000_000'
'{:_x}'.format(0xFFFFFFFF)   # 'ffff_ffff'

4、多线程制作器(Asynchronous Generators)

在Python3.5中,引进了新的英语的语法 async 和 await 来完成协同程序。可是有一个限定,不可以在同一个涵数身体另外应用 yield 和 await,在Python3.6中,这一限定被放宽了,Python3.6中容许界定多线程制作器:

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)

5、多线程在线解析(Asynchronous Comprehensions)

即容许在目录list、结合set 和词典dict 在线解析中应用 async for 或 await 英语的语法。

result = [i async for i in aiter() if i % 2]
result = [await fun() for fun in funcs if await condition()]

新提升控制模块

Python标准库(The Standard Library)中提升了一个新的控制模块:secrets。该控制模块用于转化成一些安全系数高些的随机数字,以用于管理方法数据信息,例如passwords, account authentication, security tokens, 及其related secrets等。实际使用方法可参照官方网文本文档:secrets

别的新特性

1、新的 PYTHONMALLOC 环境变量容许开发人员设定内存分配器,及其申请注册debug勾子等。

2、asyncio控制模块更为平稳、高效率,而且已不是临时性控制模块,在其中的API也全是稳定版的了。

3、typing控制模块也拥有一定改善,而且已不是临时性控制模块。

4、datetime.strftime 和 date.strftime 刚开始适用ISO 8601的時间标志符%G, %u, %V。

5、hashlib 和 ssl 控制模块刚开始适用OpenSSL1.1.0。

6、hashlib控制模块刚开始适用新的hash优化算法,例如BLAKE2, SHA-3 和 SHAKE。

7、Windows上的 filesystem 和 console 默认设置编号改成UTF-8。

8、json控制模块中的 json.load() 和 json.loads() 涵数刚开始适用 binary 种类键入。

9、.......

也有许多别的特性,但在平常工作中里能采用的大约就这么多了。有兴趣爱好的阅读者能够立即参照官方网文本文档:What's New In Python 3.6