Python 3.9 新特性全面总结
Python 3.9 新特性全面总结发布时间2020 年 10 月 5 日官方文档https://docs.python.org/zh-cn/3.9/whatsnew/3.9.html一、重磅新语法1. 字典合并运算符|和|PEP 584终于不用再写{**d1, **d2}了x{a:1,b:2}y{b:99,c:3}# 合并新建字典右侧优先zx|y# {a: 1, b: 99, c: 3}# 原地更新类似 dict.updatex|y# x 变为 {a: 1, b: 99, c: 3}注意|不修改原字典|会修改左侧字典。2. 内置类型直接用于类型标注PEP 585以前写类型提示必须从typing导入List、Dict等大写版本现在可以直接用内置类型# 旧写法3.8 及以前fromtypingimportList,Dict,Tupledeffoo(names:List[str])-Dict[str,int]:...# 新写法3.9deffoo(names:list[str])-dict[str,int]:...支持的类型包括list、dict、tuple、set、frozenset以及queue.Queue等标准库类型。3. 字符串新增removeprefix/removesuffixPEP 616告别lstrip的误用精准移除前缀/后缀Hello, World!.removeprefix(Hello, )# World!Hello, World!.removesuffix(, World!)# Hello# 如果前/后缀不存在原样返回Python.removeprefix(Java)# Pythonbytes、bytearray、collections.UserString同样支持。4. 装饰器语法放宽PEP 614之前装饰器只能是简单的名称或属性访问现在任意合法表达式都可以作为装饰器# 现在合法了button_list[0].clicked.connectbutton_list[0].clicked.connectdefslot():...二、新增模块1.zoneinfo— 时区支持PEP 615标准库终于内置了 IANA 时区数据库支持不再需要第三方pytzfromzoneinfoimportZoneInfofromdatetimeimportdatetime dtdatetime(2024,6,1,12,tzinfoZoneInfo(Asia/Shanghai))print(dt)# 2024-06-01 12:00:0008:00在没有系统时区数据的平台如 Windows可通过pip install tzdata安装数据包。2.graphlib— 拓扑排序新增graphlib.TopologicalSorter用于有向无环图的拓扑排序适合任务依赖调度等场景fromgraphlibimportTopologicalSorter graph{D:{B,C},C:{A},B:{A}}tsTopologicalSorter(graph)print(list(ts.static_order()))# [A, C, B, D] 或类似顺序三、标准库改进常用部分math模块增强importmath math.gcd(12,18,24)# 支持多个参数了返回 6math.lcm(4,6,10)# 新增最小公倍数返回 60math.nextafter(1.0,2.0)# 新增返回 1.0 往 2.0 方向的下一个浮点数math.ulp(1.0)# 新增返回浮点数的最小精度单位asyncio改进新增asyncio.to_thread()将同步阻塞函数放到线程池执行避免阻塞事件循环importasynciodefblocking_io():# 模拟耗时 IO...asyncdefmain():awaitasyncio.to_thread(blocking_io)asyncio.wait_for()超时取消行为更可靠移除了asyncio.Task.current_task()和asyncio.Task.all_tasks()已在 3.7 弃用请用asyncio.current_task()和asyncio.all_tasks()typing模块新增typing.Annotated可以为类型附加额外元数据如校验规则、文档说明等fromtypingimportAnnotated# 附加元数据不影响运行时类型检查供框架如 FastAPI使用PositiveAnnotated[int,must be positive]random模块新增random.randbytes(n)生成 n 个随机字节importrandom random.randbytes(8)# b\x9f\x12...pathlib模块新增Path.readlink()读取符号链接目标路径等价于os.readlink()。concurrent.futures改进Executor.shutdown()新增cancel_futuresTrue参数可立即取消所有未开始的任务不必等待它们完成。ipaddress模块支持 IPv6 作用域地址%scope_id格式注意3.9.5不再接受 IPv4 地址中带前缀零的写法如010.0.0.1避免八进制歧义四、解释器与性能优化新 PEG 解析器PEP 617CPython 从 LL(1) 解析器切换到基于PEG的新解析器性能相当但为未来新语法特性提供更大灵活性。Python 3.10 起旧解析器被彻底移除。内置类型 vectorcall 加速range、tuple、set、frozenset、list、dict等内置类型通过 PEP 590 vectorcall 协议加速函数调用开销更低。其他优化多线程信号处理优化非主线程不再每条字节码都检查信号减少不必要的中断UTF-8 / ASCII 短字符串解码速度提升约15%ProcessPoolExecutor工作进程按需创建减少空闲进程的 CPU 浪费垃圾回收不再因复活对象而阻塞其他不可达对象的回收五、弃用警告需要注意弃用内容说明替代方案collections.Mapping等别名Python 3.9 是最后支持版本3.10 移除改用collections.abc.Mapping等parser和symbol模块随旧解析器一起弃用改用ast模块math.factorial(float)不再接受浮点数参数传入整数asyncio.wait()传入协程对象将在 3.11 移除改传 Task 或 Futurerandom.shuffle(x, random...)random参数弃用直接调用random.shuffle(x)lib2to3模块发出 PendingDeprecationWarning考虑 LibCST 或 parsoGzipFile写入不指定mode未来默认改为读取显式传入modewb六、正式移除升级必看这些 API 在 3.9 中已彻底删除升级时需检查代码移除内容替代方案array.tostring()/fromstring()tobytes()/frombytes()threading.Thread.isAlive()is_alive()base64.encodestring()/decodestring()encodebytes()/decodebytes()fractions.gcd()math.gcd()json.loads(encoding...)直接传字符串无需指定编码asyncio.Task.current_task()/all_tasks()asyncio.current_task()/asyncio.all_tasks()ElementTree.getchildren()/getiterator()list(x)/x.iter()sys.getcheckinterval()/setcheckinterval()sys.getswitchinterval()/setswitchinterval()_dummy_thread/dummy_threading模块已无替代直接移除with (await asyncio.lock):语法async with lock:七、其他值得关注的小变化__main__.__file__改为绝对路径python3 script.py时__file__不再是相对路径os.chdir()后仍然有效sys.stderr改为行缓冲非交互模式下 stderr 不再是块缓冲日志输出更及时datetime.isocalendar()返回 namedtuple可以用.year、.week、.weekday访问字段logging.getLogger(root)行为变化现在返回真正的根日志器而非名为root的普通日志器Unicode 数据库升级到 13.0总结Python 3.9 的核心亮点|字典合并运算符— 最受欢迎的语法糖之一内置类型直接用于类型标注— 告别from typing import Liststr.removeprefix/removesuffix— 简洁实用zoneinfo时区模块— 标准库终于有了靠谱的时区支持PEG 解析器— 为未来语法扩展铺路同时这也是Python 2 兼容层的最后一个版本collections.Mapping等别名将在 3.10 彻底消失建议尽早迁移。参考Python 3.9 官方文档 - What’s New内容由 AI 整理生成内容仅供参考请仔细甄别。

相关新闻

终极直播神器:如何在OBS中实时显示键盘鼠标游戏手柄输入操作

终极直播神器:如何在OBS中实时显示键盘鼠标游戏手柄输入操作

终极直播神器:如何在OBS中实时显示键盘鼠标游戏手柄输入操作 【免费下载链接】input-overlay Show keyboard, gamepad and mouse input on stream 项目地址: https://gitcode.com/gh_mirrors/in/input-overlay 还在为直播时观众看不懂你的操作而烦恼吗&#…

2026/7/5 15:24:33 阅读更多 →
3个简单步骤掌握VIA键盘配置:打造你的个性化机械键盘

3个简单步骤掌握VIA键盘配置:打造你的个性化机械键盘

3个简单步骤掌握VIA键盘配置:打造你的个性化机械键盘 【免费下载链接】releases 项目地址: https://gitcode.com/gh_mirrors/re/releases VIA(Visual Interface for Anything)是一款革命性的开源键盘配置工具,专为机械键盘…

2026/7/5 15:20:32 阅读更多 →
Codex 桌面客户端下载与安装,Windows 和 Mac 新手一步到位

Codex 桌面客户端下载与安装,Windows 和 Mac 新手一步到位

一、Codex 是什么? Codex 是一款桌面端 AI 智能体工具。 下载地址: 软件下载地址Codex 客户端https://pan.quark.cn/s/d1dd498567ec 很多开发者第一次接触 Codex 时,容易直接跳进“找安装包”的环节,结果装好后发现无法使用。其…

2026/7/5 15:20:32 阅读更多 →

最新新闻

终极指南:如何用AI驱动的供应链瓶颈研究方法提升投资决策效率

终极指南:如何用AI驱动的供应链瓶颈研究方法提升投资决策效率

终极指南:如何用AI驱动的供应链瓶颈研究方法提升投资决策效率 【免费下载链接】serenity-skill Serenity-inspired Agent Skill for supply-chain bottleneck stock research 项目地址: https://gitcode.com/gh_mirrors/se/serenity-skill 在信息爆炸的投资时…

2026/7/5 16:24:58 阅读更多 →
Mac用户制作Windows启动盘的终极解决方案:WinDiskWriter完全指南

Mac用户制作Windows启动盘的终极解决方案:WinDiskWriter完全指南

Mac用户制作Windows启动盘的终极解决方案:WinDiskWriter完全指南 【免费下载链接】windiskwriter 🖥 Windows Bootable USB creator for macOS. 🛠 Patches Windows 11 to bypass TPM and Secure Boot requirements. 👾 UEFI &…

2026/7/5 16:22:58 阅读更多 →
终极IDM激活解决方案:3分钟永久解决激活弹窗问题

终极IDM激活解决方案:3分钟永久解决激活弹窗问题

终极IDM激活解决方案:3分钟永久解决激活弹窗问题 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 还在为Internet Download Manager(IDM&a…

2026/7/5 16:22:58 阅读更多 →
Python列表反转的5种方式:性能、内存与生产陷阱

Python列表反转的5种方式:性能、内存与生产陷阱

1. 项目概述:为什么“反转列表”不是一句list.reverse()就能打发的事在Python日常开发中,我几乎每天都会遇到“把这组数据倒过来”的需求——可能是处理传感器采集的时序数据,想从最新一条开始分析;可能是清洗用户行为日志&#x…

2026/7/5 16:20:57 阅读更多 →
Cocos引擎核心架构解析:模块化渲染引擎的设计理念与实现机制

Cocos引擎核心架构解析:模块化渲染引擎的设计理念与实现机制

Cocos引擎核心架构解析:模块化渲染引擎的设计理念与实现机制 【免费下载链接】cocos-engine Cocos simplifies game creation and distribution with Cocos Creator, a free, open-source, cross-platform game engine. Empowering millions of developers to creat…

2026/7/5 16:16:57 阅读更多 →
如何在不损失画质的情况下实现视频和图片的极致压缩?

如何在不损失画质的情况下实现视频和图片的极致压缩?

如何在不损失画质的情况下实现视频和图片的极致压缩? 【免费下载链接】compressO Convert any video/image into a tiny size. 100% free & open-source. Available for Mac, Windows & Linux. 项目地址: https://gitcode.com/gh_mirrors/co/compressO …

2026/7/5 16:16:57 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻