📜  Python locals()

📅  最后修改于: 2020-09-20 04:17:12             🧑  作者: Mango

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

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

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

符号表主要有两种。

  1. 全局符号表
  2. 本地符号表

全局符号表存储了与程序的全局范围有关的所有信息,并在Python使用globals()方法进行访问。

全局范围包含所有函数,不与任何类或函数关联的变量。

同样, 本地符号表存储与程序的本地范围有关的所有信息,并使用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表中的信息。