本篇文章3357字,读完约8分钟

从towardsdatascience中选择

作者: farhad malik

机器的心被编译

陈萍

最近发布了python 3.9,开发了词典集成和更新、新解析器、新字符串函数等新特征。

python 3.9于10月5日发布。 新版本的特征,get到了吗? 对python程序员来说,这又是一个激动人心的时刻。

与以前的版本相比,python 3.9有值得讨论的功能吗?

简单来说,从词典更新/集成到添加新字符串,到zoneinfo库的部署,python 3.9添加了很多新特征。 此外,该版本引入了稳定、高性能的新解析器。

标准库更新了多个新功能,添加了新的模块zoneinfo和graphlib。 此外,该版本还改进了多个模块,如ast、asyncio、concurrent.futures、multiprocessing和xml。

图源: Twitter/PrasoonPratham/status/1313392420038483968

那么,让我们一起探究一下python 3.9的新特征吧。

python 3.9:10个兴趣的新特征

1 .更新和合并词典

词典中添加了“|”和“|=”两个新运算符。 “|”运算符用于合并词典,“|=”运算符用于更新词典。

合并词典:

>; >; >; a = {‘Farhad’: 1,‘blog’: 2,‘Python’:3} & GT; >; >; b = {’Farhad’: ' Malik’,' ToPIC’: ' Python 3.9’} & GT; >; >; A|b {’blog’: 2,‘Python’: 3,’Farhad’:’Malik >; >; b|a {’Farhad’: 1

更新词典:

>; >; >; a |= b>; >; >; a {’blog’: 2,‘Python’: 3,’Farhad’:’Malik’>

2 .基于PEG的高性能解析器

python 3.9提出了将现在的基于ll(1)的python解析器替换为高性能稳定的基于peg的解析器。

现在的cpython解析器基于ll(1),ll(1)解析器是从左向右分析输入的自上而下的解析器。

python 3.9提出了用新的基于peg的解析器替换ll(1),这意味着解除了现在ll(1)语法对python的限制。 此外,当前解析器修复了多个要删除的hack。 因此,从长期来看,维护价格会下降。

3 .新型字符串函数:删除前缀和后缀

python 3.9向str对象添加两个新函数。

第一个函数用于删除前缀str.removeprefix(prefix )。

第二个函数用于删除后缀str.removesuffix(suffix )。

' Farhad _ Python '.remove Prefix ( ' Farhad _ ' ) # returns Python ' Farhad _ Python '.remove Suffix

4 .为嵌入式通用型提供类型提示

python 3.9通过删除并行型层次使注释程序更简单。 python 3.9支持typing模块中所有标准集合的通用语法。

list或dict可以直接用作列表和词典的类型注释,而不依赖于typing.list或typing.dict。 因此代码看起来更简洁,更容易理解和解释。

def print _ value ( input:str ):print ( input ) # wewouldgetnotifiediftheinputisnotastring

5. datetime支持iana时区

zoneinfo模块是为了支持iana时区数据库而创建的。 iana时区数据库支持已添加到标准库中。

iana时区通常称为tz或zone info。 存在多个具有不同搜索路径的iana时区,用于为date-time对象指定iana时区。 例如,可以通过将datetime对象设置为搜索路径“continent/city”来设置tzinfo。

dt = datetime ( 2000,01,25,01,tzinfo=zoneinfo("europe/london”) )

如果传递了无效的密钥,则会引起zoneinfo.zoneinfonotfounderror异常。

6. concurrent.futures优化

在concurrent.futures.executor.shut down ( )中添加了新参数cancel_futures。 此参数取消还没有执行的并发任务。 在所有并发任务完成之前,python 3.9之前的主进程无法关闭executor对象。

新参数cancel_futures添加到threadpoolexecutor和processpoolexecutor中。 其工作是如果参数值为true,则取消调用shutdown ( )函数时要解决的所有任务。

7 .异步编程和多过程优化

python 3.9优化了异步编程( asyncio )和多进程库。

1 .考虑到安全问题,async io.loop.create _ datagram _ endpoint ( )不再支持参数reuse_address。

添加了coroutines、shutdown_default_executor ( )和asyncio.to_thread ( )。 shutdown_default_executor负责关闭默认的executor。 asyncio.to_thread ( )最初用于在一个线程上执行io聚合函数,以防止问题循环。

关于多进程库的改进,python 3.9在multiprocessing.simplequeue类中添加了新方法close ( )。

这种方法允许显式关闭队列。 这将关闭队列,并确保停留时间不超过预期。 值得注意的是,关闭队列后,将无法调用get ( )、put ( )和empty ( )方法。

8 .统一的软件包导入错误

在python3.9之前的版本中,在导入python库时,第一个问题是,如果相对导入超过顶级软件包,python中的导入行为将不一致。

builtins.__import__ ( )会引起valueerror,importlib.__import__ ( )会引起importerror。 python版本3.9已修复,统一引起importerror。

9 .生成随机字节

在python版本3.9中,添加了新的函数random.random.randbytes ( )。 这个函数可以用于生成随机字节。

python支持生成随机数,但如果需要生成随机字节呢? 在python版本3.9以前,开发者必须设法生成随机字节。 他们可以使用os.getrandom ( )、os.urandom ( )或secrets.token_bytes ( )生成随机字节,但这些方法不能生成伪随机模式。

开发者一般采用种子和random.random模块,以符合预期随机数发生的行为,同时重现过程。 因此,python 3.9中添加了random.random.randbytes ( )方法,以可控的方式生成随机字节。

10 .修改字符串替换函数

在python版本3.9之前的版本中,对于所有非零n," ".replace ( ",s,n )返回空字符串而不是s。 这个错误会让用户困惑,引起应用程序不匹配。

python 3.9修复了这个问题,不管n是否为0,其结果都与" ".replace ( ",s )一致。

".replace ( "," blog ",1 ) returns’' onewouldexpecttoseeblog ".replace ( ","|)。

想更详细地了解的人,请参阅官方文件: docs.python/zh-cn/3.9/whats new/3.9。

原文链接: towardsdatascience/10-awesome-python-3-9-features-B8C 27 F5eba 5c

取出唱p主的弹幕和评论,进行广告发布的解体。

10月14日,aws处理方案设计师贺浏阳将带来live coding,演示如何利用aws云服务构建简单的数据管道。

原标题:“python 3.9来了! 这十个新特点值得注意"

阅读原文。

来源:印度时报中文版

标题:热门:Python3.9来了,这十个新特点值得关注

地址:http://www.yqjqqwc.cn/ydxw/24593.html