打开网易新闻 查看精彩图片
写Python的人几乎都踩过这个坑:想把字典当key塞进另一个字典,结果控制台甩你一脸「TypeError: unhashable type: 'dict'」。过去二十年,大家要么转用元组凑合,要么pip install frozendict,要么干脆写个try-catch假装无事发生。
Python 3.15决定终结这场闹剧。frozendict将成为原生内置类型,无需import,无需第三方包,直接调用。这是Python三十年来罕见的新增内置数据结构,上一次这么干还是2012年的enum。
核心团队给出的解释很直白:「开发者一直在用各种姿势绕过这个问题,我们干脆把路修平。」数据显示,仅PyPI上的frozendict包月下载量就超过200万次,还不算那些自己造轮子的团队。
这个改动看似小,实则动了Python的根基哲学——内置类型极少扩容。Guido当年坚持「一种明显的方式」,现在核心团队承认:有些场景确实需要不可变映射,而元组表达力不够。
frozendict支持完整字典操作,但冻结后哈希值固定,可以直接当set元素或字典key。性能测试显示,原生实现比第三方包快15%-20%,内存占用也更低。
目前该特性已进入alpha阶段,预计2025年10月随3.15正式版发布。一位维护 fourteen 年开源库的老开发者在邮件列表吐槽:「终于不用在README里解释为什么需要pip install了。」
热门跟贴