📜  Python全局变量

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

globals()方法返回当前全局符号表的字典。

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

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

符号表主要有两种。

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

本地符号表存储与程序的本地范围有关的所有信息,并可以使用locals()方法在Python进行访问。

局部作用域可以在函数内,类内等。

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

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

推荐阅读: Python的命名空间和范围

globals()的语法

全局表字典是当前模块的字典(在函数内部,这是定义它的模块,而不是调用它的模块)。

globals()方法的语法为:

globals()

globals()参数

globals()方法不带任何参数。

从globals()返回值

globals()方法返回当前全局符号表的字典。

示例1:globals()方法在Python如何工作?

globals()

输出

{'In': ['', 'globals()'],
 'Out': {},
 '_': '',
 '__': '',
 '___': '',
 '__builtin__': ,
 '__builtins__': ,
 '__name__': '__main__',
 '_dh': ['/home/repl'],
 '_i': '',
 '_i1': 'globals()',
 '_ih': ['', 'globals()'],
 '_ii': '',
 '_iii': '',
 '_oh': {},
 '_sh': ,
 'exit': ,
 'get_ipython': >,
 'quit': }

输出显示当前程序的所有全局变量和其他符号。

示例2:使用global()修改全局变量

age = 23

globals()['age'] = 25
print('The age is:', age)

输出

The age is: 25

在这里,由于全局符号表中还存储所有的全局变量,也就是在这种情况下, age ,价值age可以使用变更globals() 函数。

使用变量age的键访问返回的字典,并将其修改为25。

这再次反映在全局符号表中。