如果函数被触发,尽管无效



在函数中使用全局变量我怎么能事先知道这和我的问题有关呢?我问这个问题的原因是我甚至不知道这个(全局标签而不是帖子)存在或应用于我的问题。

我正在使用树莓派Pico,我正在从我设置的网站获得True或False值。最终发生的是,我将从我的站点获得isOn = True,这触发了if语句的第一个条件。我将isOperating设置为True,这样它只会运行if语句一次。当我在我的站点设置isOn = False时,它只触发第二个函数一次,然后默认为else语句。

我很困惑为什么第一个条件运行多次,尽管"print("isOn{0}和isOperating {1}"。格式(被搜查,isOperating)),显示isOn为True和isOperating为True

isOperating = False
def start():
isOperating = True
print('isOperating {0}'.format(isOperating))
print('I am operating')
def stop():
isOperating = False
print('isOperating {0}'.format(isOperating))
print('I am not operating')
print('Running...')
while True:
r = urequests.get("aProperURL")
jobject = r.json()
isOn = jobject['isOn']
if (isOn == True and isOperating == False):
start()
print("Start: I should print once!")
print("isOn {0} and isOperating {1}".format(isOn, isOperating))
elif (isOn == False and isOperating == True):
stop()
print("Stop: I should print once!")
print("isOn {0} and isOperating {1}".format(isOn, isOperating))
else:
print("isOn is False and isOperating is False")
time.sleep(2)
def start():
isOperating = True
print('isOperating {0}'.format(isOperating))
print('I am operating')
def stop():
isOperating = False
print('isOperating {0}'.format(isOperating))
print('I am not operating')

这些函数没有将isOperating声明为全局变量,因此该变量在这两个函数中都是局部变量,全局变量不受影响。

现在,isOperating是一个局部变量。您需要在函数中声明isOperating为全局变量,以便设置全局变量isOperating

def start():
global isOperating
isOperating = True
print('isOperating {0}'.format(isOperating))
print('I am operating')

最新更新