Python3.6正式版新特性预览

Python3.6正式版新特性预览,第1张

概述按照Python官网上的计划,Python3.6正式版期望在2016-12-16号发布,也就是这周五。从去年的5月份开始,Python3.6版本就已经动手开发了,期间也断断续续的发布了4个Alpha版,4个Beta版,以及一个Candidate版本。

按照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,可以看下这里  https://www.oudahe.com/p/22499/

新的语法特性

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 = 10precision = 4value = decimal.Decimal("12.34567")print(f"result: {value:{wIDth}.{precision}}") #'result:   12.35'

2、变量声明语法(variable annotations)

即从python3.5开始就有的Typehints。在python3.5中,是这么使用的:

from tyPing import Listdef test(a: List[int],b: int) -> int:  return a[0] + bprint(test([3,1],2))

这里的语法检查只在编辑器(比如Pycharm)中产生,在实际的使用中,并不进行严格检查。

在python3.6中,引入了新的语法:

from tyPing import List,Dictprimes: List[int] = []captain: str  # 此时没有初始值class Starship:  stats: Dict[str,int] = {}

3、数字的下划线写法(Underscores in Numeric literals)

即允许在数字中使用下划线,以提高多位数字的可读性。

a = 1_000_000_000_000_000    # 1000000000000000b = 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

总结

以上是内存溢出为你收集整理的Python3.6正式版新特性预览全部内容,希望文章能够帮你解决Python3.6正式版新特性预览所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1202951.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-04
下一篇2022-06-04

发表评论

登录后才能评论

评论列表(0条)

    保存