如何在Python中设置全局变量

11

好的,我已经花了大约40分钟的时间寻找如何在Python中设置全局变量,但我得到的所有结果都是复杂和高级的问题以及更多的答案。 我正在尝试在Python中制作一个老虎机,并且我想制作一个硬币系统,这样您就可以真正赚取硬币,使游戏更好,但是当我运行代码时,它告诉我“UnboundLocalError:引用之前未分配的本地变量”。我通过将我的变量设置为全局变量来解决这个问题:

global coins

coins = 50

由于某种原因打印了“50”,并再次出现了UnboundLocalError错误,所以根据一个答案,我尝试了:

def GlobalCoins():    
    global coins      
    coins = 50

尽管出现“NameError:全局名称'coins'未定义”的错误,但并没有打印出“50”。 所以我不太清楚如何设置它。 这可能是极其基础的东西,这也可能是一个重复的问题,但我的网络搜索和程序尝试都没有结果,所以我暂时陷入了困境。


你把这两段代码都放在同一个文件里了吗?你的代码没有打印任何东西,那你为什么期望它会产生任何输出呢? - BrenBarn
你需要先声明 coins,然后当你想要改变它时将其声明为全局变量。 - Peter Wood
非常感谢,现在终于可以工作了。谢谢! - oisinvg
1个回答

13

在函数外部声明coins时省略'global'关键字。 这篇文章 对Python中全局变量提供了很好的概述。例如,以下代码:

def f():
    global s
    print s
    s = "That's clear."
    print s 


s = "Python is great!" 
f()
print s

输出如下:

Python is great!
That's clear.
That's clear.

'global' 关键字并不会创建全局变量。它用于引入已经存在于其作用域之外的变量。


6
确实,global关键字本身不会创建变量,但它也不要求该变量已经存在。在函数内部,您可以使用global x,然后x = 10,如果该变量尚不存在,则将创建全局变量。 - BrenBarn
1
这个答案是不正确的。正如@BrenBarn所说,您可以创建一个全局变量。最后输出不是“Python is great!”的原因是函数内部的全局变量s已经被赋予了新值“That's clear.”。 - Avantgarde

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接