Python global 语句
global_stmt ::= "global" identifier ("," identifier)*
global
语句是作用于整个当前代码块的声明。 它意味着所列出的标识符将被解读为全局变量。 要给全局变量赋值不可能不用到 global
关键字,不过自由变量也可以指向全局变量而不必声明为全局变量。
在 global
语句中列出的名称不得在同一代码块内该 global
语句之前的位置中使用。
在 global
语句中列出的名称不能被定义为形式参数,也不能被作为 with
语句或 except
子句的目标,以及 for
循环的目标列表、class
定义、函数定义、import
语句或变量标注等等。
CPython 实现细节: 当前的实现并未强制要求所有的上述限制,但程序不应当滥用这样的自由,因为未来的实现可能会改为强制要求,并静默地改变程序的含义。
程序员注意事项: global
是对解析器的指令。 它仅对与 global
语句同时被解析的代码起作用。 特别地,包含在提供给内置 exec()
函数字符串或代码对象中的 global
语句并不会影响 包含 该函数调用的代码块,而包含在这种字符串中的代码也不会受到包含该函数调用的代码中的 global
语句影响。 这同样适用于 eval()
和 compile()
函数。