我正在用python制作一个游戏,我有一些代码设置如下:
istouching = False
death = True
def checkdead():
if istouching:
print "Is touching"
death = True
while death is False:
print death
game logic
我知道游戏逻辑正在运行,因为“正在触摸”打印,但是当我打印出死亡的价值时,它仍然是假的,有什么帮助吗?
答案 0 :(得分:4)
使用global
更改函数内的全局变量,否则death=True
内的checkdead()
实际上会定义一个新的局部变量。
def checkdead():
global death
if istouching == True: #use == here for comparison
print "Is touching"
death = True
答案 1 :(得分:4)
让checkdead
返回一个值:
def checkdead():
if istouching:
print "Is touching"
return True
death = checkdead()
您也可以使用global
,正如@AshwiniChaudhar所示,但我认为最好编写返回值的函数而不是修改全局变量的函数,因为这些函数可以更容易地进行单元测试,并且它明确指出外部变量的变化。
PS。 if istouching = True
应该导致语法错误,因为您无法在条件表达式中进行变量赋值。
相反,请使用
if istouching:
答案 2 :(得分:1)
这与范围有关。
death = False
def f():
death = True # Here python doesn't now death, so it creates a new, different variable
f()
print(death) # False
death = False
def f():
global death
death = True
f()
print(death) # True