如何在python中获取当前作用域

Max*_*Max 3 python scope

是否有任何参考指向当前范围,我查找了很多文章,但找不到答案,例如我想在当前范围内打印每个var的内容

for x in list(locals()):
    print(x)
Run Code Online (Sandbox Code Playgroud)

但只给我这个,var的名字

__builtins__
__file__
__package__
__cached__
__name__
__doc__
Run Code Online (Sandbox Code Playgroud)

我不想要这样的代码

print(__builtins__)
print(__file__)
print(__package__)
print(__cached__)
print(__name__)
print(__doc__)
....
Run Code Online (Sandbox Code Playgroud)

Sim*_*got 6

要获取这些值,您可以使用:

for symbol, value in locals().items():
    print symbol, value
Run Code Online (Sandbox Code Playgroud)

locals() 给你一个字典。迭代字典可以得到它的键。要获取(键,值)对的列表,请使用 items 方法。


Rob*_*wie 5

大规模的过度杀伤...在函数中包装过滤和打印本地命名空间.

我不推荐这个.我发布它主要是为了表明它可以完成并获得评论.

import inspect

def print_local_namespace():
    ns = inspect.stack()[1][0].f_locals
    for k, v in ns.iteritems():
        if not k.startswith('__'):
            print '{0} : {1}'.format(k, v)


def test(a, b):
    c = 'Freely'
    print_local_namespace()
    return a + b + c


test('I', 'P')
Run Code Online (Sandbox Code Playgroud)