python3 Python3.9来了 这十个新特性值得关注

选自towardsdatascience
作者:法尔哈德·马利克
机器之心编译
编辑:陈平
近日,Python 3.9 发布,并开发了一些新特性,包括字典合并与更新、新的解析器、新的字符串函数等。
Python 3.9 已于 10 月 5 日发布,新版本的特性,你 get 到了吗?对于 Python 程序员来说,这又是一个令人兴奋的时刻。Python 3.9于10月5日发布。你了解新版本的特点吗?对于Python程序员来说,这是另一个激动人心的时刻。
与之前的版本相比,Python 3.9有哪些值得讨论的特性?
简而言之,从字典更新 / 合并到添加新的字符串方法,再到 zoneinfo 库的引入,Python 3.9 添加了许多新特性。此外,该版本还引入了一种稳定、高性能的新型解析器。
标准库更新了许多新特性,并添加了新模块 zoneinfo 和 graphlib。此外该版本也对许多模块进行了改进,如 ast、asyncio、concurrent.futures、multiprocessing、xml 等。标准库中更新了许多新功能,并添加了新模块zoneinfo和graphlib。此外,这个版本还改进了很多模块,比如ast、asyncio、concurrent.futures、多处理、xml等等。
【python3 Python3.9来了 这十个新特性值得关注】来源:https://Twitter . com/prasoonpratham/status/1313392420038483968
现在让我们一起探索 Python 3.9 的新特性。
Python 3.9: 10个有趣的新特性
1. 字典更新和合并
字典中添加了两个新运算符:“|”和“| =”。“|”运算符用于合并词典,而“| =”运算符用于更新词典。
字典合并:
> > > a = {'farhad': 1,' blog': 2,' python': 3 } > > > > b = { ' farhad': 'malik ',' topic': 'python3.9'} > > > > a | b { ' blog': 2,' python': 3,' Farhad ':' Malik ',' topic ':' python 3.9 ' } > > > b | a { ' Farhad ':1,' blog ':2,' python ':3,' topic ':' python 3.9 ' }
字典更新:
> > > a |= b>>> a{'blog': 2,' python': 3,' farhad':'malik'}
2. 基于 PEG 的高性能解析器
Python 3.9提出用高性能、稳定的PEG解析器取代目前基于LL的Python解析器。
当前的 CPython 解析器基于 LL,LL 解析器是一个自顶向下的解析器,它从左到右解析输入。
Python 3.9提出用新的基于PEG的解析器取代ll,这意味着它将消除当前LL语法对Python的限制。此外,当前的解析器修复了许多将被删除的黑客攻击。因此,从长远来看,这将降低维护成本。
3. 新型字符串函数:删除前缀和后缀
Python 3.9向str对象添加了两个新函数:
第一个函数用于删除前缀:str.removeprefix
第二个函数用于删除后缀:str.removesuffix
'farhad_python'.removeprefix#returns python'farhad_python'.removesuffix#returns farhad
4.为内置泛型类型提供类型提示
Python 3.9 通过删除并行类型层次结构,使注释程序变得更加简单。Python 3.9 支持 typing 模块所有标准集合中的泛型语法。
我们可以直接将列表或字典作为列表和字典的类型进行注释,而不需要依靠键入。因此,代码现在看起来更简单,更容易理解和解释。
def print_value: print# We would get notified if the input is not a string
5.日期时间支持IANA时区
zoneinfo 模块被创建出来支持 IANA 时区数据库。对 IANA 时区数据库的支持已经添加到标准库中。
IANA时区通常被称为tz或时区信息。有许多具有不同搜索路径的IANA时区,用于为日期时间对象指定IANA时区。例如,我们可以通过在datetime对象上设置搜索路径“大陆/城市”来设置tzinfo。
dt = datetime)
如果传入了无效的密钥。将引发ZoneInfoNotFoundError异常。
6. concurrent.futures 优化
并发添加了一个新参数cancel_futures。此参数可以取消尚未执行的并发任务。在Python 3.9之前,主进程只有在所有并发任务完成后才能关闭执行器对象。

推荐阅读