Python 运行一个函数后不会改变一个布尔值

Python will not change a boolean value after it runs through a function

from random import randrange

on = ''

max_number = 0
random_number = 0

def start():
    max_number = int(input('Enter max generated number: '))
    random_number = randrange(max_number)
    print(random_number)
    on = True

start()

print(on) # returns false??

为了学校项目,我需要制作一个猜数字游戏。这是我的开始代码。我在开始函数之前声明了“on”,但该函数不会将布尔值更改为 true

现在,on 是一个“局部”变量,只能在函数范围内看到和使用。要更改函数内外的任何变量的值,您需要键入命令 global {variable},通常在函数的顶部。在您的情况下,将其添加到您的函数中:

def start():
    global on <-- Right Here
    max_number = int(input('Enter max generated number: '))

您可以在线研究有关 globalnonlocal 变量的更多信息。 承认@Samwise 的评论,全局变量和非局部变量并不总是最好的选择,但我认为最好还是学习它(你知道的越多!)。他是对的,你可能甚至不需要 on 变量,而且使用 return 语句是最好的选择。