You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.6/3.7中NoReturn未纳入__all__的原因及合理性咨询

关于NoReturn在Python 3.6/3.7中无法通过from typing import *导入的问题

首先可以明确:这不是因为NoReturn存在什么危害,更像是版本迭代过程中的一个小疏漏,而非故意遗漏。

  • 你提到的issue28556确实在Python 3.6的代码库中添加了NoReturn类型,但开发人员当时并没有把它同步加入到typing模块的__all__列表里。而__all__的作用就是定义模块对外暴露的公开成员集合,只有在这个列表里的名字,才会被from typing import *这种方式导入。
  • 这个问题在Python 3.8中被正式修复,NoReturn被加入到__all__中,所以从3.8版本开始,from typing import *就能正常导入它了。

从社区相关讨论来看,3.6和3.7版本的遗漏只是功能更新时的疏忽——当时只完成了NoReturn核心功能的开发,却忘了同步更新模块的公开成员列表。它本身没有任何安全或功能上的问题,如果你在3.6/3.7环境中需要使用它,只需要显式导入即可:

from typing import NoReturn  # 这样就能正常使用,完全安全

它的功能和3.8及以后版本中的NoReturn完全一致,只是导入方式需要多写一行而已。

内容的提问来源于stack exchange,提问作者AllenT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:06:04