Python获取调用函数的当前变量

6
def foo():
    a = 1
    b = 2
    dir() # prints [a, b]
    bar(?) 

der bar(foo_pointer):
    print dir(foo_pointer) # should print [a,b]

我想使用bar(sys.modules [__ name__] .main),但是它返回的不是[a,b],而是['__call__', '__class__' ...],没有包含ab
实际上,我想要安全地保存该指针以便以后使用,所以我不能只传递[a,b]

Python没有指针。你到底想要实现什么?你可以将ab传递给bar,并在其他地方存储对相同值的引用。 - Martijn Pieters
1个回答

10
使用 sys._getframe() 函数 可以获得调用帧的访问权限。 帧对象具有一个 f_locals 属性,使您可以访问该帧的局部变量:
import sys

def bar():
    caller = sys._getframe(1)
    print caller.f_locals

2
需要注意的是,这个函数带有警告:CPython 实现细节:此函数仅应用于内部和专业目的。不能保证在所有 Python 实现中都存在。 - Inbar Rose
1
@InbarRose:这就是为什么我直接链接到它,而不是inspect.getcurrentframe()的同义词。 - Martijn Pieters

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接