gpt4 book ai didi

python - 可以从导入的模块访问 __name__ 属性吗

转载 作者:行者123 更新时间:2023-12-02 09:24:35 24 4
gpt4 key购买 nike

给定一个导入模块 B 的模块 A,是否有一种方法可以让模块 B 中的函数(在模块 A 中使用)访问模块 A 中的 __name__ 属性,而无需显式传递该属性(例如,函数参数)?

最佳答案

是的,您可以通过函数调用堆栈一级“返回”来访问存储在框架的 f_globals 属性中的调用函数的全局变量。这就是我的意思:

# The main script.

import module_A

module_A.func()
<小时/>
# module_A.py

import module_B

def func():
module_B.func()
<小时/>
# module_B.py

import sys

def func():
namespace = sys._getframe(1).f_globals # caller's globals
print(f'module_B.func() was called from {namespace["__name__"]}')

运行主脚本的输出:

module_B.func() was called from module_A

我想补充一点,这是一件很棘手的事情,因此在生产代码中执行此操作之前您可能需要三思而后行。

关于python - 可以从导入的模块访问 __name__ 属性吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59912684/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com