Python 基础教程

Python 流程控制

Python 函数

Python 数据类型

Python 文件操作

Python 对象和类

Python 日期和时间

Python 高级知识

Python 参考手册

Python locals() 使用方法及示例

Python 内置函数

locals()方法更新并返回当前本地符号表的字典。

符号表是由编译器维护的数据结构,其中包含有关程序的所有必要信息。

这些包括变量名,方法,类等。

符号表主要有两种。

  1. 全局符号表

  2. 本地符号表

一个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表中的信息。

Python 内置函数