首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python 的 try 为什么变免费了?拆开 3.11 零成本异常:异常表、562 纳秒与字典查找的反转

Python 的 try 为什么变免费了?拆开 3.11 零成本异常:异常表、562 纳秒与字典查找的反转

作者头像
小小张说故事
发布于 2026-10-25 15:37:24
发布于 2026-10-25 15:37:24
20
举报
概述
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 删除。

目录
  • 一、结论先行
  • 二、字节码:异常表长什么样
  • 三、正常路径实测:一分钱不收
  • 四、异常路径:562 ns 买什么
  • 五、字典查找的反转:命中越快,未命中越慢
  • 六、finally 与 else:语义级保障
  • 七、实战守则
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档