您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    Python 3.9来了!这十个新特性值得关注
    时间:2020-10-14 21:25 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    近日,Python 3.9 发布,并开发了一些新特性,包括字典兼并与更新、新的解析器、新的字符串函数等。

    Python 3.9 已于 10 月 5 日发布,新版本的特性,你 get 到了吗?关于 Python 顺序员来说,这又是一个令人兴奋的时辰。

    Python 3.9来了!这十个新特性值得关注

    相比于之前的版本,Python 3.9 有哪些值得讨论的功用呢?

    简而言之,从字典更新 / 兼并到添加新的字符串办法,再到 zoneinfo 库的引入,Python 3.9 添加了许多新特性。此外,该版本还引入了一种波动、高功用的新型解析器。

    标准库更新了许多新特性,并添加了新模块 zoneinfo 和 graphlib。此外该版本也对许多模块停止了改良,如 ast、asyncio、concurrent.futures、multiprocessing、xml 等。

    图源:https://twitter.com/PrasoonPratham/status/1313392420038483968

    如今让我们一同探求 Python 3.9 的新特性。

    Python 3.9:10 个幽默的新特性

    1. 字典更新和兼并

    字典添加两个新的运算符:「|」和「|=」。「|」运算符用于兼并字典,「|=」运算符用于更新字典。

    字典兼并:

    字典更新:

    2. 基于 PEG 的高功用解析器

    Python 3.9 提出用高功用和波动的基于 PEG 的解析器取代以后基于 LL(1) 的 Python 解析器。

    以后的 CPython 解析器基于 LL(1),LL(1) 解析器是一个自顶向下的解析器,它从左到右解析输入。

    Python 3.9 提议将 LL(1) 交流为新的基于 PEG 的解析器,这意味着它将解除以后 LL(1) 语法对 Python 的限制。此外,以后的解析器修补了许多将要删除的 hack。因此,从长远来看,这会降低维护成本。

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

    Python 3.9 将两个新函数添加到 str 对象:

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

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

    4. 对内置泛型类型提供类型提示

    Python 3.9 经过删除并行类型层次结构,使注释顺序变得愈加复杂。Python 3.9 支持 typing 模块一切标准集合中的泛型语法。

    我们可以将 list 或 dict 直接作为列表和字典的类型注释,而不必依赖 typing.List 或许 typing.Dict。因此,代码如今看起来愈加繁复,而且更容易了解和解释。

    5. DateTime 支持 IANA 时区

    zoneinfo 模块被创立出来支持 IANA 时区数据库。对 IANA 时区数据库的支持曾经添加到标准库中。

    IANA 时区通常称为 tz 或 zone info。存在许多具有不同搜索途径的 IANA 时区,用于为 date-time 对象指定 IANA 时区。例如,我们可以将对 datetime 对象设置搜索途径「Continent/City」来设置 tzinfo。

    假设传入一个有效的密钥,则会引发 zoneinfo.ZoneInfoNotFoundError 异常。

    6. concurrent.futures 优化

    concurrent.futures.Executor.shutdown() 中添加了一个新参数 cancel_futures。此参数可以取消尚未执行的并发义务。在 Python 3.9 之前主进程只要在一切并发义务完成后才能封锁 executor 对象。

    新参数 cancel_futures 已被添加到 ThreadPoolExecutor 以及 ProcessPoolExecutor。它的任务方式是:当参数的值为 True 时,在调用 shutdown() 函数时取消一切待处置的义务。

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

    Python 3.9 对异步编程(asyncio)和多进程库停止了优化。

    2. 新增了 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。Python3.9 版本停止了修复,它将一致引发 ImportError。

    9. 生成随机字节

    Python 3.9 版本中添加了新的函数 random.Random.randbytes()。该函数可用于生成随机字节。

    Python 支持生成随机数,但假设需求生成随机字节呢?在 Python3.9 版本之前,开发人员必须想方设法生成随机字节。虽然他们可以运用 os.getrandom()、os.urandom() 或许 secrets.token_bytes() 来生成随机字节,但这些办法无法生成伪随机形式。

    为了确保随机数的产生契合预期行为,并且进程可复现,开发人员通常将种子(seed)与 random.Random 模块一同运用。因此,Python 3.9 添加了 random.Random.randbytes() 办法,以可控的方式生成随机字节。

    10. 修复字符串交流函数

    在 Python 3.9 版本之前,关于一切非零的 n,"".replace("",s,n) 前往空字符串而不是 s。这个错误运用户困惑,并招致运用顺序的不分歧行为。

    Python 3.9 修复了该成绩,不管 n 能否为 0,其结果都与 "".replace("", s) 分歧。

    假设大家想深化了解更多细节,请查阅官方文档:https://docs.python.org/zh-cn/3.9/whatsnew/3.9.html

    【编辑引荐】

    Web开发人员必备的阅读器扩展

    Python之三元表达式嵌套三元表达式解析

    不懂AI的我,是如何搞开发的?

    中国Java开发者人数最多丨2020Java现状报告

    这款开源图表库让你的开发溜到飞起

    (责任编辑:admin)