【发布时间】:2015-01-20 08:28:51
【问题描述】:
如果您在函数之前声明一个全局变量并尝试在函数中更改该变量,则会引发错误:
james = 100
def runthis():
james += 5
这行不通。
除非你在函数中再次声明全局变量,像这样:
james = 100
def runthis():
global james
james += 5
有没有更简单的方法来改变函数内部的变量?一次又一次地重新声明变量有点混乱和烦人。
【问题讨论】:
-
global x似乎是一种将变量声明为全局变量的非常简单的方法。你会如何想象一个更简单的方法会是什么样子?也就是说,全局变量应该很少需要。我几乎从不使用global键盘。 -
您可以将
james引用为globals()['james'] -
Sven Mrnach,在我需要这种帮助的情况下,我发现自己不得不不断更改多个函数中的全局变量,这有点痛苦。
-
@user3579419 好吧,我的意思是——不要那样做。全局状态是邪恶的,使用大量全局状态会导致无法维护和无法测试的代码。这一点在这里用几个 cmet 来解释有点困难,但这是每个有经验的程序员都可以确认的。
-
如果它可以阻止使用全局变量,那就更好了。