在本文中,我们将介绍全局关键字、Python 中全局关键字的基本规则、局部变量和全局变量之间的区别以及 Python 中全局关键字的示例。
全局关键字是允许用户修改当前范围之外的变量的关键字。它用于在 Python 中从非全局范围(即函数内部)创建全局变量。仅当我们想要进行赋值或想要更改变量时,才在函数内部使用全局关键字。打印和访问不需要全局。
全局关键字规则:
Python中global关键字的使用:要访问函数内的全局变量,不需要使用global关键字。
# global variable
a = 15
b = 10
# function to perform addition
def add():
c = a + b
print(c)
# calling a function
add()
输出:
25
如果我们需要为全局变量分配新值,那么我们可以通过将该变量声明为全局变量来实现。
a = 15
# function to change a global value
def change():
# increment value of a by 5
b = a + 5
a = b
print(a)
change()
输出:
UnboundLocalError: local variable 'a' referenced before assignment
此输出是一个错误,因为我们尝试为外部作用域中的变量赋值。这可以通过使用全局变量来完成。
x = 15
def change():
# using a global keyword
global x
# increment value of a by 5
x = x + 5
print("Value of x inside a function :", x)
change()
print("Value of x outside a function :", x)
输出:
Value of x inside a function : 20
Value of x outside a function : 20
在上面的例子中,我们首先在函数change()中将x定义为全局关键字。然后 x 的值增加 5,即 x=x+5,因此我们得到的输出为 20。正如我们通过更改函数 Change() 内部的值所看到的,该更改也反映在全局变量外部的值中。
在这里,我们可以修改全局范围内定义的列表元素,而无需使用 global 关键字。因为我们没有修改与变量 arr 关联的对象,而是修改列表包含的项目。由于列表是可变的数据结构,因此我们可以修改其内容。
arr = [10, 20, 30]
def fun():
for i in range(len(arr)):
arr[i] += 10
print("'arr' list before executing fun():", arr)
fun()
print("'arr' list after executing fun():", arr)
输出:
'arr' list before executing fun(): [10, 20, 30]
'arr' list after executing fun(): [20, 30, 40]
这里我们尝试将一个新列表分配给全局变量。因此,我们需要在创建新对象时使用 global 关键字。在这里,如果我们不使用 global 关键字,那么将使用新的列表元素创建一个新的局部变量 arr 。但全局变量 arr 将保持不变。
arr = [10, 20, 30]
def fun():
global arr
arr = [20, 30, 40]
print("'arr' list before executing fun():", arr)
fun()
print("'arr' list after executing fun():", arr)
输出:
'arr' list before executing fun(): [10, 20, 30]
'arr' list after executing fun(): [20, 30, 40]
在同一程序中的不同模块之间共享全局变量的最佳方法是创建一个特殊的模块(通常名为 config 或 cfg)。在应用程序的所有模块中导入配置模块;然后该模块就可以作为全局名称使用。每个模块只有一个实例,因此对模块对象所做的任何更改都会反映到各处。例如,跨模块共享全局变量。
x = 0
y = 0
z = "none"
import config
config.x = 1
config.y = 2
config.z = "geeksforgeeks"
这里我们修改了x、y和z的值。这些变量是在 config.py 模块中定义的,因此我们必须导入 config 模块,并可以使用 config.variable_name 来访问这些变量。
import config
import modify
print(config.x)
print(config.y)
print(config.z)
输出:
1
2
geeksforgeeks
为了在嵌套函数中使用 global,我们必须在嵌套函数中声明一个带有 global 关键字的变量
# Python program showing a use of
# global in nested function
def add():
x = 15
def change():
global x
x = 20
print("Before making changing: ", x)
print("Making change")
change()
print("After making change: ", x)
add()
print("value of x", x)
输出:
Before making changing: 15
Making change
After making change: 15
value of x 20
在上面的例子中,在进行change()之前和之后,变量x取局部变量的值,即x = 15。在add()函数之外,变量x将取change()函数中定义的值,即x = 20。因为我们在x中使用了global关键字在change()函数内部(局部范围)创建了一个全局变量。
原文链接:codingdict.net