我想知道在某些情况下,在python中是否需要声明全局关键字。
是的,在某些情况下需要global
。 看看这段代码,它可以正常工作:
i = 42 # this is a global var
def f():
print(i)
但是,如果您想编辑i
(这是一个全局变量(,该怎么办? 如果这样做,则会收到错误:
i = 42 # this is a global var
def f():
i += 1 # this will not work
print(i)
我们只能访问i
.如果python将函数编译为字节码,它会检测到变量的赋值,并假定它是一个局部变量。但这里的情况并非如此(它是一个全局变量(。因此,如果我们还想修改全局变量i
则必须使用global
关键字。
i = 42 # this is a global var
def f():
global i
i += 1 # this will change the global var without error
print(i)
当您共享资源并希望在全局资源中进行更改时。
a = 0
def add_five():
global a
a += 5
def remove_two():
global a
a -= 2
add_five() # a = 5
add_five() # a = 10
add_five() # a = 15
remove_two() # a = 13