Python3.9来了,有哪些新变化?

Python 3.9.0 最终版本于2020年10月5号发布。

像多数Python爱好者一样,我非常兴奋地探索着最新的功能,本文将为大家展示10个有趣的新特征。

本文来源于Medium,翻译校对:蜂鸟数据,原文作者:Farhad Malik,原文标题:10 Awesome Python 3.9 Features

在这里插入图片描述

1. 字典更新和合并

字典添加两个新的运算符,’|‘和’|=’。

'|‘运算符用于合并字典,’|='运算符用于更新。

字典合并:
在这里插入图片描述

字典更新:
在这里插入图片描述

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

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

当前的CPython解析器基于LL(1),LL(1)是自上而下的解析器,此外它从左到右解析输入。

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

3. 剔除字符串前缀和后缀

删除前缀:str.removeprefix(prefix)。

删除后缀:str.removesuffix(suffix)。
在这里插入图片描述

4. 内置数据类型的类型提示

Python 3.9启用了typing模块提供的所有标准集合中对泛型语法的支持。

我们可以将list或dict直接作为列表和字典的类型注释,而不必依赖typing.List或者typing.Dict,如此一来代码将变得更加简洁。

在这里插入图片描述

5. 支持IANA时区

名为"zoneinfo"的新模块添加到标准库中,"zoneinfo"支持IANA时区数据库。

IANA时区通常称为tz或zone info。有许多具有不同搜索路径的IANA时区,用于创建明确时区的日期时间对象。例如,我们可以将搜索路径"Continent/City"传递给datetime对象以设置tzinfo。

在这里插入图片描述

如果提供错误的搜索路径,会引发zoneinfo.ZoneInfoNotFoundError异常。

6. concurrent.futures优化

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

cancel_futures已经被添加到ThreadPoolExecutor和ProcessPoolExecutor,当参数被设置为True,调用shutdown()会取消所有未处理的任务。

7. 异步和多进程的优化

3.9版本对asyncio和multiprocessing库做了优化:

  1. asyncio.loop.create_datagram_endpoint()不再支持reuse_address参数,降低了安全风险。
  2. 新增asyncio.to_thread(),shutdown_default_executor()。shutdown_default_executor计划关闭executor,asyncio.to_thread()则在一条单独的线程中运行IO阻塞的函数。
  3. multiprocessing.SimpleQueue类添加了新方法close(),用于显式地关闭队列,一旦关闭队列后将无法使用get(), put(), empty()方法。

8. 统一软件包导入错误

在3.9版本之前导入Python库的主要问题是,当相对导入超出顶级包时,Python的导入行为不一致。

builtins.__import__()引发ValueError,而importlib.__import__()引发ImportError。3.9版本将统一引发ImportError。

9. 生成随机字节

标准库random提供一个新函数:random.Random.randbytes(),用于生成随机字节。

3.9之前可以使用诸如os.getrandom(), os.urandom(),secrets.token_bytes()等方法,但不能生成伪随机模式。为确保重复随机过程,通常将种子(RandomSeed)与random.Random模块一起使用,randbytes()以可控方式生成随机字节。

10. 优化str.replace方法

3.9之前,"".replace("",s,n) 返回空字符串而不是s,如下图所示,这会导致程序出现不一致的行为。3.9版本已解决此问题,不管n是否非零,结果都与"".replace("",s) 保持一致。

在这里插入图片描述

如果大家想深入了解更多细节,可以阅读官方文档:Python 3.9 有哪些新变化

你们的点赞和收藏是我们最大的创作动力,我们每天都会为大家带来数据科学和量化交易领域的精品内容。

蜂鸟数据:开源金融数据接口,一个API连接世界金融市场。

蜂鸟数据团队由业界顶尖的数据工程师,数据科学家和宽客组成,我们正努力构建一个开源的金融数据库,提供API接口,目标是令金融数据开源化和平民化。

浏览并测试我们接口吧,目前覆盖股票,外汇,商品期货,数字货币和宏观经济领域,包括实时报价(tick)和历史数据(分钟),提供REST API和Websocket两种接入方式,能够满足金融分析师,量化交易和理财app的需求。

蜂鸟数据API接口文档

登录蜂鸟官网,注册免费获取API密钥

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值