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

2024-04-24 00:46:36 发布

您现在位置:Python中文网/ 问答频道 /正文

是否有指向当前作用域的引用,我查阅了许多文章,但找不到答案,例如我想打印当前作用域中每个var的内容

for x in list(locals()):
    print(x)

但只要告诉我,var的名字

__builtins__
__file__
__package__
__cached__
__name__
__doc__

我不想要这样的代码

print(__builtins__)
print(__file__)
print(__package__)
print(__cached__)
print(__name__)
print(__doc__)
....

Tags: 答案nameinpackage内容fordocvar
3条回答

要仅打印locals()中不以'__'开头的变量名:

for local_var in list(locals()):
    if not local_var.startswith('__'): print local_var

大规模滥杀。。。在函数中包装本地命名空间的筛选和打印。

我不推荐这个。我发布它主要是为了显示它可以做到,并获得评论。

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')

要同时获取值,可以使用:

for symbol, value in locals().items():
    print symbol, value

locals()给你一个dict,遍历dict给你一个键。要获取(键、值)对的列表,请使用items方法。

相关问题 更多 >