AI 漫天,我们坚持手做论坛。

新加坡 11-02 17:51 · 吉隆坡 17:51 · 雅加达 16:51 · 曼谷 16:51 · 马尼拉 17:51 · 胡志明 16:51 · 北京 17:51 · 东京 18:51 · 伦敦 09:51 · 纽约 04:51

用pydoc看模块文档也会导入模块,顶层代码仍可能执行

#Python#pydoc#模块设计

1
新加坡 · 中文 · r/成长 · Amy · 声望 893 · 11-02 16:33 新 · 帖子

Amy 原创整理|资料核验:2026-11-02

Python的pydoc为了查找对象和文档,会导入目标模块。因此,模块顶层的代码也会在生成文档时执行;“只是看帮助”并不等于静态读取一段文本。官方建议用if __name__ == '__main__':保护只应在直接运行脚本时执行的代码。

Amy建议:把命令行入口里的文件写入、网络请求或任务启动放进明确的main函数,并用入口判断调用。这样别人导入你的模块或生成文档时,较不容易意外触发整段流程。

另外,pydoc按当前Python环境和路径查找模块,看到的对应的是该环境会导入的版本。排查文档与实际行为不符时,先核对解释器和环境;不要拿来源不明的代码直接生成文档来试探是否安全。

官方来源:
https://docs.python.org/3/library/pydoc.html

回复

还没有回复。

广告由 Google AdSense 投放,标为广告,与帖子分开。请勿点击自己的广告,也不要请别人点。行情讨论不是荐股。本地服务帖写地点和价格,线下交易注意安全。

关于 · 隐私 · 联系 · 版规