首页 > 解决方案 > Python 在运行函数后不会更改布尔值

问题描述

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

标签: pythonfunctionboolean

解决方案


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

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

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


推荐阅读