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 整理生成内容仅供参考请仔细甄别。

相关新闻

F3闪存检测工具:5分钟识别扩容盘欺诈的完整指南

F3闪存检测工具:5分钟识别扩容盘欺诈的完整指南

F3闪存检测工具:5分钟识别扩容盘欺诈的完整指南 【免费下载链接】f3 F3 - Fight Flash Fraud 项目地址: https://gitcode.com/gh_mirrors/f3/f3 在数字时代,数据安全是每个人的首要关切。你是否遇到过新买的U盘价格异常便宜,但存储重要…

2026/7/5 15:22:44阅读更多 →
【Ansible】(十四)流程控制与异常处理

【Ansible】(十四)流程控制与异常处理

目录 一、前言 二、基础错误处理机制 1. 忽略任务错误 2. 强制执行 Handler 三、自定义任务执行状态 1. 自定义失败条件 failed_when 2. 自定义变更状态 changed_when 四、高级异常处理:Block、Rescue、Always 五、知识点总结问答 1. ignore_errors 的作用…

2026/7/5 15:22:44阅读更多 →
流放之路2构建规划终极指南:用Path of Building PoE2告别盲目配装

流放之路2构建规划终极指南:用Path of Building PoE2告别盲目配装

流放之路2构建规划终极指南:用Path of Building PoE2告别盲目配装 【免费下载链接】PathOfBuilding-PoE2 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding-PoE2 还在为《流放之路2》复杂的角色构建系统感到头疼吗?每次花费数小…

2026/7/5 15:22:44阅读更多 →
Flutter Planets测试指南:为行星应用编写Widget测试的完整流程

Flutter Planets测试指南:为行星应用编写Widget测试的完整流程

Flutter Planets测试指南:为行星应用编写Widget测试的完整流程 【免费下载链接】flutter_planets_tutorial The Flutter Planets app tutorial with commits per lesson 项目地址: https://gitcode.com/gh_mirrors/fl/flutter_planets_tutorial Flutter Plan…

2026/7/5 18:37:57阅读更多 →
CANN/asc-devkit多核矩阵乘法缓冲区大小获取

CANN/asc-devkit多核矩阵乘法缓冲区大小获取

MultiCoreMatmulGetTmpBufSize 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: h…

2026/7/5 18:37:57阅读更多 →
CANN算子库TransDataSpecial

CANN算子库TransDataSpecial

TransDataSpecial 【免费下载链接】docs 该仓库用于维护cann公共文档 项目地址: https://gitcode.com/cann/docs 产品支持情况 Ascend 950PR/Ascend 950DT:不支持 Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 Atlas A2 训练系列产品/Atlas…

2026/7/5 18:37:57阅读更多 →
如何通过CKAD认证考试:CKAD-prep-notes中的10个高效学习技巧

如何通过CKAD认证考试:CKAD-prep-notes中的10个高效学习技巧

如何通过CKAD认证考试:CKAD-prep-notes中的10个高效学习技巧 【免费下载链接】ckad-prep-notes List of resources and notes for passing the Certified Kubernetes Application Developer (CKAD) exam. 项目地址: https://gitcode.com/gh_mirrors/ck/ckad-prep-…

2026/7/5 18:37:57阅读更多 →
Missionary核心概念解析:任务(Task)与流(Flow)的完整教程

Missionary核心概念解析:任务(Task)与流(Flow)的完整教程

Missionary核心概念解析:任务(Task)与流(Flow)的完整教程 【免费下载链接】missionary A functional effect and streaming system for Clojure/Script 项目地址: https://gitcode.com/gh_mirrors/mi/missionary Missionary是一个专为Clojure/Script设计的函…

2026/7/5 18:37:57阅读更多 →
3个实战场景解析:如何用Audacity提升音频处理效率?

3个实战场景解析:如何用Audacity提升音频处理效率?

3个实战场景解析:如何用Audacity提升音频处理效率? 【免费下载链接】audacity Audio Editor 项目地址: https://gitcode.com/GitHub_Trending/au/audacity 还在为音频编辑的复杂流程而烦恼吗?Audacity作为一款完全免费的开源音频编辑…

2026/7/5 18:32:57阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/5 0:01:08阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/5 0:01:08阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/5 0:01:08阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/5 0:01:08阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/5 0:01:08阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/5 0:01:08阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/5 1:30:27阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/5 3:48:10阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/5 3:48:09阅读更多 →