Python locals()
函数
原文: https://thepythonguru.com/python-builtin-functions/locals/
于 2020 年 1 月 7 日更新
locals()
函数返回一个字典,其中包含在本地名称空间中定义的变量。 在全局名称空间中调用locals()
与调用globals()
相同,并返回代表模块全局名称空间的字典。
其语法如下:
locals() -> dictionary containg local scope variables
这是一个例子:
#!/usr/bin/python3
from pprint import pprint
a = 10
b = 20
def foo():
x = 30 # x and y are local variables
y = 40
print("locals() = {0}".format(locals()))
pprint(locals()) # same as calling globals()
print('*' * 80)
print("locals() == globals()? ", locals() == globals())
print('*' * 80)
foo()
预期输出:
{'__builtins__': <module 'builtins' (built-in)>,
'__cached__': None,
'__doc__': None,
'__file__': 'module1.py',
'__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x7fa18790a828>,
'__name__': '__main__',
'__package__': None,
'__spec__': None,
'a': 10,
'b': 20,
'foo': <function foo at 0x7fa1878752f0>,
'pprint': <function pprint at 0x7fa1878756a8>}
********************************************************************************
locals() == globals()? True
********************************************************************************
locals() = {'y': 40, 'x': 30}
试试看:
from pprint import pprint
a = 10
b = 20
def foo():
x = 30 # x and y are local variables
y = 40
print("locals() = {0}".format(locals()))
pprint(locals()) # same as calling globals()
print('*' * 80)
print("locals() == globals()? ", locals() == globals())
print('*' * 80)
foo()