【发布时间】:2023-04-06 03:59:01
【问题描述】:
inspect module 的文档说:
当以下函数返回“帧记录”时,每条记录都是一个 命名元组
FrameInfo(frame, filename, lineno, function, code_context, index)。元组包含框架对象、文件名、行 当前行号,函数名,行列表 源代码中的上下文,以及当前行的索引 那个列表。
究竟什么是“框架对象”?我希望使用这个框架对象从调用者的globals() 中获取变量的值:
import my_util
a=3
my_util.get_var('a')
和 my_util.py
import inspect
def get_var(name):
print(inspect.stack()[1][0])
【问题讨论】:
-
虽然文档没有解释框架对象实际上是什么,但他们至少在this table 中描述了它的结构(向下滚动到“框架”)。看起来你可以做
return inspect.stack()[1][0].f_globals[name]。 -
@Rawing 谢谢,这似乎有效!
-
一个小补充,如果你想深入一点,我发现这个 SO 线程非常有用 - stackoverflow.com/questions/23848391/…
标签: python introspection