Python,布尔值自行重置

Python, boolean resets itself

我正在使用 python 并且正在制作游戏,但有一件事我不明白。

为什么这个布尔值会重置?我不希望布尔值 'powerup' 重置。

def spawnPowerup()
    number = 0
    powerup = False

    if (a certain thing happens, the thing happens for one frame.):
        number = random.randint(1,2)

    if number == 1 or powerup == True:
        print(powerup)
        powerup = True
        print(powerup)

这段代码背后的想法是,每当事情发生时,我都会得到一个数字。当数字等于 1 时,应该激活 powerup,但由于数字一直在变化,所以我需要这个布尔值。因此,每当数字等于 1 时,我都会更改布尔值,因此当数字等于 1 时,if 语句将始终为真。但问题是布尔值会重置。如果事情发生几次,这将被打印出来:

False
True
False
True
False
True
False
True

你总是在输入函数时将布尔值设置为 False,所以它自然会被重置。但这是一个局部变量;它无论如何都不存在于函数之外。

每次调用此函数时,

powerup 都会设置为 False。所以当你击球时:

if number == 1 or powerup == True:
        print(powerup)
        powerup = True
        print(powerup)
如果您输入该块,

number 必须是 1(除非您有其他未显示的代码)。所以当你第一次打印时,powerup 仍然是 False。你设置为True,然后再打印

这是让您感到困惑的地方:

if number == 1 or powerup == True:
    print(powerup)
    powerup = True
    print(powerup)

这里只会打印powerup的值。在第一个 print 语句中,值总是 False,而之后,它是 True。您只会在执行 if 块时将其打印出来,将 powerup 更改为 True。要对此进行更多探索,只需在 if 块之前添加一个 print(powerup)