3 回答

TA贡献2065条经验 获得超14个赞
你把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("...")

TA贡献1818条经验 获得超7个赞
修改 is_True() 函数:
def is_True():
return True
并且,在循环内,将其分配给测试:
test = is_True()

TA贡献1820条经验 获得超3个赞
许多其他答案都提到了如何解决这个问题,但我认为解释为什么这不起作用也会有帮助,以帮助将来。
在 中is_True
,当您分配给 test 时,您正在创建一个新的局部变量,而不是引用名为 的全局变量test
。如果要引用全局,请添加global test
到is_True
. 这将告诉 python 您要引用全局变量,而不是创建一个新的本地变量。
当然,您可能不应该为此使用全局变量,因此更好的解决方案是返回True
fromis_True()
和 do test = is_True()
。
添加回答
举报