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

为何导入模块后Python文件的__doc__会被设为None?

问题原因解析

这是Python对模块文档字符串(__doc__)的定义规则导致的:

  • Python规定,模块的文档字符串是模块中第一个非注释、非空行的语句,且必须是字符串字面量,这个字符串会被自动赋值给模块的__doc__属性。
  • 在第一个示例中,开头的多行字符串是模块的第一个有效语句,所以被识别为模块文档字符串,__doc__自然会指向它。
  • 在第二个示例中,import sys是模块的第一个有效语句,后面的多行字符串不再是模块的第一个语句,因此不会被当作模块文档字符串。此时模块没有定义符合规则的文档字符串,__doc__就保持默认的None。

你可以做个验证:如果把字符串放在import语句前面,比如:

"""
This here is a docstring
"""
import sys

print(f'Doc=[{__doc__}]')

运行后会输出:

Doc=[
This here is a docstring
]

这就印证了规则——只有模块最开头的字符串字面量才会被当作__doc__。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 17:04:52