局部名字空间可以通过内置的 locals() 函数来访问。
全局名字空间可以通过 globals() 函数来访问。
locals()函数:以字典类型返回当前位置的全部局部变量。对于函数, 方法, lambda 表达式, 类, 以及实现了 __call__ 方法的类实例, 它都返回 True。
def test(arg):
z = 1
print locals()
test(4) # {'z': 1, 'arg': 4}
test('good good study') # {'z': 1, 'arg': 'good good study'}
globals()函数:以字典类型返回当前位置的全部全局变量。
>>> globals()
{'__name__': '__main__',
'__doc__': None,
'__package__': None,
'__loader__': <class '_frozen_importlib.BuiltinImporter'>,
'__spec__': None,
'__annotations__': {},
'__builtins__': <module 'builtins' (built-in)>}
注意:定义的所有全局变量,包括类,函数,变量,都会添加到globals()返回的字典中。
>>> class testClass(object):
... pass
...
>>> testVar = 100
>>> def testDef():
... pass
...
>>> globals()
{'__name__': '__main__',
'__doc__': None, '__package__': None,
'__loader__': <class '_frozen_importlib.BuiltinImporter'>,
'__spec__': None,
'__annotations__': {},
'__builtins__': <module 'builtins' (built-in)>,
'testClass': <class '__main__.testClass'>,
'testVar': 100,
'testDef': <function testDef at 0x1018f9ef0>}
网友评论