文章目录
- 概要
- 基础用法
概要
-
globals()和locals()都是内置函数,用于获取当前命名空间中的变量。
-
globals()函数返回全局命名空间的字典,包括全局变量、函数和模块。它返回一个表示全局命名空间的字典。你可以使用该函数来查看和修改全局命名空间中的变量。
-
locals()函数返回当前命名空间的字典,包括局部变量、函数和模块。它返回一个表示当前命名空间的字典。如果在全局作用域外调用locals(),它将返回全局命名空间。你可以使用该函数来查看和修改当前命名空间中的变量。
-
返回值:返回一个字典,包含当前全局作用域或者局部变量的所有变量和它们的值。字典的键是变量名,值是对应变量的值。
基础用法
代码演示:
x = 10
y = 20def add(a, b):z = a + bprint(locals())add(x, y)
print(globals())# 输出结果:
# {'a': 10, 'b': 20, 'z': 30}
# {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <...>, '__spec__': None, '__annotations__': {}, '__builtins__': <...>, 'x': 10, 'y': 20, 'add': <function add at 0x...>}
你可以看到,在函数内部调用locals()函数时,返回的字典中包含了局部变量a、b和z。而在函数外部调用globals()函数时,返回的字典中包含了全局变量x、y和函数add的定义。
注意
:locals()函数返回的字典是对当前命名空间的引用,对其的修改会直接影响到当前命名空间中的变量。而globals()函数返回的字典是对全局命名空间的引用,对其的修改会直接影响到全局命名空间中的变量。因此,在使用这两个函数时,需要谨慎操作,以防止意外修改变量。通常情况下,推荐使用局部命名空间来封装和管理变量,只在必要时才使用globals()和locals()函数。