小小张说故事
Python 的 try 为什么变免费了?拆开 3.11 零成本异常:异常表、562 纳秒与字典查找的反转
原创
关注作者
腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
搜索
搜索
关闭
发布
小小张说故事
社区首页
>
专栏
>
Python 的 try 为什么变免费了?拆开 3.11 零成本异常:异常表、562 纳秒与字典查找的反转
Python 的 try 为什么变免费了?拆开 3.11 零成本异常:异常表、562 纳秒与字典查找的反转
小小张说故事
关注
发布于 2026-10-25 15:37:24
发布于 2026-10-25 15:37:24
2
0
举报
概述
3.11 起 try 正常路径实测免费(带 try 147.8ns vs 不带 151.7ns,差额在噪声内);异常触发 562ns 约为正常路径 3.8 倍。机制:SETUP_FINALLY 压栈被 co_exceptiontable 异常表取代。由此产生字典查找反转——命中时 try/except 最快(158ns),未命中最慢(450ns,比 .get 慢 2.5 倍)。EAFP 该按命中率选。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系
cloudcommunity@tencent.com
删除。
python
目录
一、结论先行
二、字节码:异常表长什么样
三、正常路径实测:一分钱不收
四、异常路径:562 ns 买什么
五、字典查找的反转:命中越快,未命中越慢
六、finally 与 else:语义级保障
七、实战守则
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档