📅  最后修改于: 2020-09-20 04:06:48             🧑  作者: Mango
符号表是由编译器维护的数据结构,其中包含有关程序的所有必要信息。
这些包括变量名,方法,类等。
符号表主要有两种。
本地符号表存储与程序的本地范围有关的所有信息,并可以使用locals()方法在Python进行访问。
局部作用域可以在函数内,类内等。
同样, 全局符号表存储与程序的全局范围有关的所有信息,并且可以使用globals()
方法在Python进行访问。
全局范围包含所有函数,不与任何类或函数关联的变量。
推荐阅读: Python的命名空间和范围
全局表字典是当前模块的字典(在函数内部,这是定义它的模块,而不是调用它的模块)。
globals()
方法的语法为:
globals()
globals()
方法不带任何参数。
globals()
方法返回当前全局符号表的字典。
globals()
输出
{'In': ['', 'globals()'],
'Out': {},
'_': '',
'__': '',
'___': '',
'__builtin__': ,
'__builtins__': ,
'__name__': '__main__',
'_dh': ['/home/repl'],
'_i': '',
'_i1': 'globals()',
'_ih': ['', 'globals()'],
'_ii': '',
'_iii': '',
'_oh': {},
'_sh': ,
'exit': ,
'get_ipython': >,
'quit': }
输出显示当前程序的所有全局变量和其他符号。
age = 23
globals()['age'] = 25
print('The age is:', age)
输出
The age is: 25
在这里,由于全局符号表中还存储所有的全局变量,也就是在这种情况下, age
,价值age
可以使用变更globals()
函数。
使用变量age
的键访问返回的字典,并将其修改为25。
这再次反映在全局符号表中。