locals()
方法返回一个字典,其中包含当前程序的所有局部变量和符号。
示例
print(locals())
输出
{'In': ['', 'locals()'], 'Out': {}, '_': '', '__': '', '___': '', '__builtin__': , '__builtins__': , '__name__': '__main__', '_dh': ['/home/repl'], '_i': '', '_i1': 'locals()', '_ih': ['', 'locals()'], '_ii': '', '_iii': '', '_oh': {}, '_sh': , 'exit': , 'get_ipython': >, 'quit': }
locals() 语法
locals()
方法的语法是
locals()
locals() 参数
locals()
方法不带任何参数。
locals() 返回值
locals()
方法返回当前局部符号表的字典。
示例 1:Python locals()
class local:
l = 50
# locals inside a class
print('\nlocals() value inside class\n', locals())
输出
locals() value inside class {'__module__': '__main__', '__qualname__': 'PLocal', 'l': 50}
Python 编译器维护一个符号表,其中包含有关正在编写的程序的必要信息。Python 中有两种类型的符号表——局部和全局。
局部符号表存储与程序局部范围(类或方法内部)相关的所有信息。我们可以使用 locals()
方法访问此符号表。
通常,Python 程序员使用 locals()
方法将任何变量和方法限制在方法或类的范围内。
在上面的示例中,我们有一个名为 local
的类。这里,我们使用 locals()
方法返回此类的变量和方法。
示例 2:使用 locals() 更改值
def localsPresent():
present = True
print(present)
locals()['present'] = False;
print(present)
localsPresent()
输出
True True
在上面的示例中,我们尝试使用 locals()
方法更改 localsPresent()
函数中 present
变量的值。
虽然 locals()
返回一个表示当前局部符号表的字典,但修改该字典并不会改变函数中局部变量的实际值。
因此,即使我们尝试通过 locals()['present']
将 present
设置为 False
,函数内部的实际 present
变量仍然是 True
。
另请阅读