python - 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
解决方案
现在,on
是一个“局部”变量,只能在函数范围内看到和使用。要更改函数内部和外部的任何变量的值,您需要键入 command global {variable}
,通常在函数的顶部。在您的情况下,将其添加到您的函数中:
def start():
global on <-- Right Here
max_number = int(input('Enter max generated number: '))
您可以在线研究更多关于global
和nonlocal
变量的信息。承认@Samwise 评论,全局和非局部变量并不总是最好的选择,但我认为无论如何最好学习它(你知道的越多!)。他是对的,您甚至可能不需要该on
变量,并且使用return
语句是最佳选择。
推荐阅读
- python - 调用 pyplot.bar,没有得到图表
- visual-studio-code - IntelliSense 只建议一个选项
- python - Python解析器不能与代理一起工作我该怎么办?
- excel - 自动更新数据透视表-EXCEL
- excel - Excel VBA 从 Web 提取 HTML 数据时对象未设置错误
- java - 使用 CMD 的 java RMI 的端口已在使用异常
- python-sphinx - 如何在 Sphinx 主题中设置布局切换到移动布局的宽度阅读文档?
- elasticsearch - Elasticsearch 本地实例
- mysql - 在 Mysql 中过滤值和求和
- javascript - Gatsby StaticQuery 和呈现的 HTML