说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
在 Python 中,global 语句用于在函数内部声明一个全局变量,即使这个变量在函数外部定义。通常情况下,Python 在函数内部创建的变量是局部变量,仅在该函数内有效。如果想在函数内部修改一个全局变量的值,就需要使用 global 语句。
下面是一些关于 global 语句的重要点:
语法:
global var_name
global var_name1, var_name2
其中 var_name 是你想要声明为全局变量的变量名。
global 语句是作用于整个当前代码块的声明。 它意味着所列出的标识符将被解读为全局变量。 要给全局变量赋值不可能不用到 global 关键字,不过自由变量也可以指向全局变量而不必声明为全局变量。
在 global 语句中列出的名称不得在同一代码块内该 global 语句之前的位置中使用。
在 global 语句中列出的名称不能被定义为形式参数,也不能被作为 with 语句或 except 子句的目标,以及 for 循环的目标列表、class 定义、函数定义、import 语句或变量标注等等。
CPython 实现细节: 当前的实现并未强制要求所有的上述限制,但程序不应当滥用这样的自由,因为未来的实现可能会改为强制要求,并静默地改变程序的含义。
程序员注意事项: global 是对解析器的指令。 它仅对与 global 语句同时被解析的代码起作用。 特别地,包含在提供给内置 exec() 函数字符串或代码对象中的 global 语句并不会影响 包含 该函数调用的代码块,而包含在这种字符串中的代码也不会受到包含该函数调用的代码中的 global 语句影响。 这同样适用于 eval() 和 compile() 函数。
看一下以下代码:
# 在函数外部定义一个全局变量
x = 10
def change_global():
global x # 声明 x 是一个全局变量
x = 20 # 修改全局变量的值
print("修改前的全局变量 x:", x) # 输出 10
change_global()
print("修改后的全局变量 x:", x) # 输出 20
在这个示例中:
global x
声明 x 为全局变量。在函数内部,如果你试图直接修改一个全局变量而不使用 global 语句,Python 会认为你是在创建一个新的局部变量,从而导致结果不符合预期。例如:
x = 10
def modify_without_global():
x = 20 # 创建一个新的局部变量 x,不会影响全局变量
print("函数内部的 x:", x) # 输出 20
modify_without_global()
print("函数外部的全局变量 x:", x) # 仍然是 10
在这个例子中,函数内部的 x 是一个局部变量,对全局变量 x 没有任何影响。因此,函数外部的 x 值仍然是 10。
注意:
global 语句是 Python 提供的一种机制,用于在函数内部声明和修改全局变量,以便在函数外部访问和修改这些变量。
更新时间:June 8, 2024, 7:14 p.m. 标签:python global 全局变量