Python 全局关键字
Python 全局关键字
在本文中,您将了解全局关键字、全局变量以及何时使用全局关键字。
在阅读本文之前,请确保您已掌握 Python 全局、局部和非局部变量的一些基础知识。
什么是全局关键字
在 Python 中,global
关键字允许您在当前范围之外修改变量。它用于创建全局变量并在局部上下文中对变量进行更改。
全局关键字规则
global
的基本规则 Python中的关键字是:
- 当我们在函数内部创建变量时,默认是局部变量。
- 当我们在函数之外定义一个变量时,它默认是全局的。您不必使用
global
关键字。 - 我们使用
global
关键字在函数内读写全局变量。 global
的使用 函数外的关键字无效。
全局关键字的使用
举个例子吧。
示例 1:从函数内部访问全局变量
c = 1 # global variable
def add():
print(c)
add()
当我们运行上面的程序时,输出会是:
1
但是,我们可能会遇到一些需要从函数内部修改全局变量的场景。
示例 2:从函数内部修改全局变量
c = 1 # global variable
def add():
c = c + 2 # increment c by 2
print(c)
add()
当我们运行上面的程序时,输出显示错误:
UnboundLocalError: local variable 'c' referenced before assignment
这是因为我们只能访问全局变量,而不能从函数内部对其进行修改。
解决方案是使用 global
关键字。
示例 3:使用 global 从函数内部更改全局变量
c = 0 # global variable
def add():
global c
c = c + 2 # increment by 2
print("Inside add():", c)
add()
print("In main:", c)
当我们运行上面的程序时,输出会是:
Inside add(): 2 In main: 2
在上面的程序中,我们定义了 c 作为 add()
中的全局关键字 功能。
然后,我们增加变量 c 由 2 ,即 c = c + 2
.之后,我们调用 add()
功能。最后,我们打印全局变量 c .
可以看到,函数外的全局变量c = 2
也发生了变化 .
跨 Python 模块的全局变量
在 Python 中,我们创建了一个单独的模块 config.py
在同一程序中保存全局变量并在 Python 模块之间共享信息。
这是我们如何在 python 模块之间共享全局变量的方法。
示例 4:跨 Python 模块共享全局变量
创建一个 config.py
文件,用于存储全局变量
a = 0
b = "empty"
创建一个 update.py
文件,改变全局变量
import config
config.a = 10
config.b = "alphabet"
创建一个 main.py
文件,测试值的变化
import config
import update
print(config.a)
print(config.b)
当我们运行 main.py
文件,输出将是
10 alphabet
在上面,我们创建了三个文件:config.py
, update.py
, 和 main.py
.
模块 config.py
存储 a 的全局变量 和 b .在 update.py
文件,我们导入 config.py
模块并修改 a 的值 和 b .同样,在 main.py
文件,我们同时导入 config.py
和 update.py
模块。最后,我们打印并测试全局变量的值是否改变。
嵌套函数中的全局
以下是在嵌套函数中使用全局变量的方法。
示例 5:在嵌套函数中使用全局变量
def foo():
x = 20
def bar():
global x
x = 25
print("Before calling bar: ", x)
print("Calling bar now")
bar()
print("After calling bar: ", x)
foo()
print("x in main: ", x)
输出是:
Before calling bar: 20 Calling bar now After calling bar: 20 x in main: 25
在上面的程序中,我们在嵌套函数 bar()
中声明了一个全局变量 . foo()
内 函数,x 没有全局关键字的影响。
调用bar()
前后 , 变量 x 取局部变量的值,即 x = 20
. foo()
之外 函数,变量 x 将采用 bar()
中定义的值 功能即 x = 25
.这是因为我们使用了 global
x 中的关键字 在 bar()
中创建全局变量 函数(本地范围)。
如果我们在 bar()
中进行任何更改 函数,更改出现在本地范围之外,即 foo()
.
Python