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

时间:2013-10-31 13:29:18

标签: python dir

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]

1 个答案:

答案 0 :(得分:9)

使用sys._getframe() function访问调用帧。框架对象具有f_locals属性,使您可以访问该框架的局部变量:

import sys

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