我正在尝试使用在我的 while 循环中运行的另一个函数在某些条件下打破它。我一直在编写练习代码来尝试尝试,但它似乎并没有中断……它只是无限运行global testdef is_True(): test = Truefor i in range(5): test = False print("Run number:",i) while(test==False): print("the is_True method hasn't been called yet") is_True() print("The is__True method was called")
3 回答
翻翻过去那场雪
TA贡献2065条经验 获得超13个赞
你把global语句放在错误的地方。它在函数中表明它test不是局部变量。一个global在全球范围内声明基本上是一个无操作。
def is_True():
global test
test = True
也就是说,尽可能避免使用全局变量。有is_True回报True,而不是和返回值分配给test在呼叫范围内。
def is_True():
return True
while not test:
print("...")
test = is_True()
print("...")
qq_笑_17
TA贡献1818条经验 获得超7个赞
修改 is_True() 函数:
def is_True():
return True
并且,在循环内,将其分配给测试:
test = is_True()
DIEA
TA贡献1820条经验 获得超2个赞
许多其他答案都提到了如何解决这个问题,但我认为解释为什么这不起作用也会有帮助,以帮助将来。
在 中is_True
,当您分配给 test 时,您正在创建一个新的局部变量,而不是引用名为 的全局变量test
。如果要引用全局,请添加global test
到is_True
. 这将告诉 python 您要引用全局变量,而不是创建一个新的本地变量。
当然,您可能不应该为此使用全局变量,因此更好的解决方案是返回True
fromis_True()
和 do test = is_True()
。
添加回答
举报
0/150
提交
取消