在python中是否有需要全局关键字的情况?



我想知道在某些情况下,在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

相关内容

最新更新