
locals()方法更新并返回当前本地符号表的字典。
符号表是由编译器维护的数据结构,其中包含有关程序的所有必要信息。
这些包括变量名,方法,类等。
符号表主要有两种。
- 全局符号表 
- 本地符号表 
一个Global 符号表存储与程序的全球范围内的所有信息,并使用Python在访问globals()方法。
全局范围包含所有函数,与任何类或函数都没有关联的变量。
同样,Local 符号表存储与程序的本地范围有关的所有信息,并使用locals()方法在Python中进行访问。
局部作用域可以在函数内,类内等。
推荐阅读: Python的命名空间和范围
locals()的语法
locals()方法的语法为:
locals()
locals()参数
locals()方法不带任何参数。
locals()返回值
locals()方法更新并返回与当前本地符号表关联的字典。
示例1:locals()如何在Python中工作?
locals()
运行该程序时,输出为:
{'In': ['', 'locals()'],
 'Out': {},
 '_': '',
 '__': '',
 '___': '',
 '__builtin__':,
 '__builtins__':,
 '__name__': '__main__',
 '_dh': ['/home/repl'],
 '_i': '',
 '_i1': 'locals()',
 '_ih': ['', 'locals()'],
 '_ii': '',
 '_iii': '',
 '_oh': {},
 '_sh':,
 'exit':,
 'get_ipython':>,
 'quit':}注意:全局环境的globals()和locals()符号表是相同的。
示例2:locals()如何在本地范围内工作?
def localsNotPresent():
    return locals()
def localsPresent():
    present = True
    return locals()
print('localsNotPresent:', localsNotPresent())
print('localsPresent:', localsPresent())运行该程序时,输出为:
localsNotPresent: {}
localsPresent: {'present': True}示例3:更新locals()字典值
def localsPresent(): present = True print(present) locals()['present'] = False; print(present) localsPresent()
运行该程序时,输出为:
True True
与globals()字典(它反映对实际全局表的更改)不同,locals()字典可能不会更改locals表中的信息。
