如何从dir()引用其他范围

时间:2012-11-01 14:47:14

标签: python introspection

我想知道其他作用域中可用的内容,或者正在运行某些类的实例数等等。这类事情。

让它变得甜美而短暂

print dir()
def func():
    #print dir(magic_keyword)
    print dir()
func()

用于从函数内部和外部获取相同结果的“magic_keyword”是什么?

我正在检查calling dir() in python,但这个问题从未真正回答过。

由于

1 个答案:

答案 0 :(得分:4)

您正在寻找locals()globals()功能。

dir(),没有参数,返回等效的locals().keys()

globals()与模块范围内的locals()基本相同,但在函数中它返回模块范围变量。

>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']
>>> locals().keys()
['__builtins__', '__name__', '__doc__', '__package__']
>>> def foo():
...     return locals().keys(), globals().keys()
... 
>>> foo()
([], ['__builtins__', '__name__', 'foo', '__doc__', '__package__'])