说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
Python 的内置函数 globals() 返回实现当前模块命名空间的字典。对于函数中的代码,这是在定义函数时设置的,并且无论在何处调用函数都保持不变。
例如:
>>> foo = 1
>>> globals()
'''
{'__name__': '__main__', '__doc__': None,
'__package__': None,
'__loader__': <class '_frozen_importlib.BuiltinImporter'>,
'__spec__': None, '__annotations__': {},
'__builtins__': <module 'builtins' (built-in)>, 'foo': 1}
'''
符号表是由编译器维护的一种数据结构,它包含有关程序的所有必要信息。其中包括变量名、方法、类等。符号表主要有两种:局部符号表全局符号表。
局部符号表存储与程序的本地范围相关的所有信息,并在 Python 中使用 locals() 方法进行访问。局部作用域可以在函数、类等中。
同样,全局符号表存储与程序全局范围相关的所有信息,并在Python中使用 globals() 方法进行访问。全局范围包含与任何类或函数都不关联的所有函数和变量。
globals 表字典是当前模块的字典(在函数内部,这是定义它的模块,而不是调用它的模块)。
示例:
foo = 123
globals()['foo'] = 456 # 修改
globals()['bar'] = 789 # 新增
foo # 456
bar # 789
这里,由于全局符号表还存储所有全局变量,即在本例中为 foo,因此可以使用 globals() 函数更改 foo 的值。使用变量 foo 的键访问返回的字典,并将其修改为 456。
同时,我们增加了全局变量 bar,并赋值为 789。
Python globals() locals() vars() 三个内置函数的区别,可参考 locals() 的相关介绍。
更新时间:March 28, 2022, 11:22 a.m. 标签:python 变量