原文: https://thepythonguru.com/python-builtin-functions/locals/
于 2020 年 1 月 7 日更新
locals()函数返回一个字典,其中包含在本地名称空间中定义的变量。 在全局名称空间中调用locals()与调用globals()相同,并返回代表模块全局名称空间的字典。
其语法如下:
locals() -> dictionary containg local scope variables
这是一个例子:
#!/usr/bin/python3from pprint import pprinta = 10b = 20def foo():x = 30 # x and y are local variablesy = 40print("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 pprinta = 10b = 20def foo():x = 30 # x and y are local variablesy = 40print("locals() = {0}".format(locals()))pprint(locals()) # same as calling globals()print('*' * 80)print("locals() == globals()? ", locals() == globals())print('*' * 80)foo()
