最新公告
  • 欢迎您光临欧资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • Python3.9发布:10个有趣的新特性(图)

    最近,Python 3.9 发布了一些新功能,包括字典合并和更新、新的解析器、新的字符串函数等等。

    Python 3.9 10 月 5 日发布,新版本的特性你掌握了吗?对于 Python 程序员来说,这是另一个激动人心的时刻。

    Python 3.9 相比之前的版本有哪些值得讨论的特性?

    简而言之,Python 3.9 增加了许多新特性解析程序包出错,从字典更新/合并到添加新的字符串方法,再到引入 zoneinfo 库。此外,此版本还引入了一个新的、稳定的、高性能的解析器。

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

    来源:

    现在让我们来探索一下 Python 3.9 的新特性。

    Python 3.9:10 个有趣的新特性

    1. 字典更新和合并

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

    字典合并:

    >>> a = {‘farhad’: 1, ‘博客’: 2, ‘python’: 3}

    >>> b = {‘farhad’: ‘malik’,’topic’: ‘python3.9’}

    >>> 一个 | b

    {‘blog’: 2, ‘python’: 3, ‘farhad’:’malik’,’topic’: ‘python3.9’}

    >>> b | 一个

    {‘farhad’: 1,’blog’: 2, ‘python’: 3,’topic’:’python3.9′ }

    字典更新:

    >>> a |= b

    >>> 一个

    {‘blog’: 2, ‘python’: 3,’farhad’:’malik’}

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

    Python 3.9 提议将当前基于 LL(1) 的 Python 解析器替换为高性能且稳定的基于 PEG 的解析器。

    当前的 CPython 解析器基于 LL(1),LL(1) 解析器是自上而下的解析器解析程序包出错,从左到右解析输入。

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

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

    Python 3.9 向 str 对象添加了两个新函数:

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

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

    ‘farhad_python’.removeprefix(‘farhad_’)

    #返回蟒蛇

    ‘farhad_python’.removesuffix(‘_python’)

    #返回法哈德

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

    Python 3.9 通过删除并行类型层次结构使注释程序变得更简单。Python 3.9 在类型模块的所有标准集中都支持通用语法。

    我们可以直接使用 list 或 dict 作为列表和字典的类型注解,而不是依赖于 typing.List 或 typing.Dict。因此,代码现在看起来更简洁,更易于理解和解释。

    defprint_value(输入:str):

    打印(输入)

    # 如果输入不是字符串,我们会收到通知

    5. DateTime 支持 IANA 时区

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

    IANA 时区通常称为 tz 或区域信息。有许多 IANA 时区具有不同的搜索路径,用于为日期时间对象指定 IANA 时区。例如,我们可以通过设置日期时间对象的搜索路径“大陆/城市”来设置 tzinfo。

    dt = datetime(2000, 01, 25, 01, tzinfo=ZoneInfo(“Europe/London”))

    如果传入无效的密钥,则会引发 zoneinfo.ZoneInfoNotFoundError 异常。

    6. concurrent.futures 优化

    concurrent.futures.Executor.shutdown() 中添加了一个新参数 cancel_futures。该参数可以取消尚未执行的并发任务。在 Python 3.9 之前,主进程只有在所有并发任务完成后才能关闭执行器对象。

    ThreadPoolExecutor 和 ProcessPoolExecutor 添加了一个新参数 cancel_futures。它的工作方式是:当参数的值为True时,调用shutdown()函数时取消所有挂起的任务。

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

    Python 3.9 针对异步编程 (asyncio) 和多处理库进行了优化。

    1. 出于安全考虑,asyncio.loop.create_datagram_endpoint() 不再支持reuse_address 参数。

    2. 添加了协程、shutdown_default_executor() 和 asyncio.to_thread()。shutdown_default_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() 来生成随机字节,但这些方法不能生成伪随机模式。

    为了确保随机数生成的行为符合预期并且该过程是可重现的,开发人员通常使用带有 random.Random 模块的种子。因此,Python 3.9 添加了 random.Random.randbytes() 方法,以可控的方式生成随机字节。

    10. 修复字符串替换功能

    在 Python 3.9 版本之前,””.replace(“”,s,n) 对于所有非零 n 返回空字符串而不是 s。此错误使用户感到困惑并导致应用程序的行为不一致。

    Python 3.9 修复了这个问题,无论 n 是否为 0,结果都与 “”.replace(“”, s) 相同。

    “”.replace(“”, “博客”, 1)

    Returns ”人们希望看到博客””.replace(“”,”|”, 1)

    Returns ”人们期望看到 |””.replace(“”,”prefix”)

    但是返回“前缀”

    站内大部分资源收集于网络,若侵犯了您的合法权益,请联系我们删除!
    欧资源网 » Python3.9发布:10个有趣的新特性(图)

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    欧资源网
    一个高级程序员模板开发平台

    发表评论