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

Python如何在被调用模块内获取调用方模块对象及__doc__文档字符串

解决方案

方案1:获取主运行脚本的模块对象(适配当前场景)

你运行python a.py时,a.py会作为主入口模块以__main__的名字被加载到Python的模块缓存中,直接从sys.modules读取即可,完全不会触发导入逻辑,不存在循环导入问题:

# b.py 代码
import sys

def func():
    # 直接从模块缓存取主运行模块对象
    main_module = sys.modules["__main__"]
    # 读取__doc__
    print(main_module.__doc__)

方案2:获取任意调用方的模块对象

如果你需要拿到直接调用func的上层模块(而非固定主入口模块),可以用inspect模块读取调用栈获取对应模块,不需要手动解析文件名:

# b.py 代码
import inspect

def func():
    # 取调用栈的第1层帧(第0层是func本身的帧)
    caller_frame = inspect.stack()[1].frame
    # 根据栈帧获取对应的模块对象
    caller_module = inspect.getmodule(caller_frame)
    print(caller_module.__doc__)

验证示例

给a.py添加文档字符串即可测试效果:

# a.py 代码
"""这是a.py的文档字符串"""
import b
b.func()

运行python a.py即可成功输出对应的文档内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:36:03