dort aufgerufen wird. Ich habe ein Programm erstellt und bin auf ein Problem gestoßen, das mich und mein Verständnis des Basiscodes (oder meines Verständnisses meiner Sehkraft) verwirrt.If Anweisung Wert nicht in Schleife ändern, wenn von einer anderen Funktion in Python
Nach mir soll dieser Code aus drucken
-Test
sofort als das Programm gestartet wird und dann, wenn ext() von Timer-Thread der Schleifenvariable genannt wird, auf False ändern, im Wesentlichen Rückgabe false auf der if-Anweisung und nicht weiter "Test" auszudrucken.
Aber obwohl ext() aufgerufen wird (ich testete dies), wird die if-Anweisung aufgerufen, und loop ändert sich nicht in False.
from threading import Timer, Thread
from time import sleep
loop = True
def hello():
while True:
if loop == True:
print('Test')
sleep(0.5)
def ext():
loop = False
th = Thread(target=hello)
th.start()
t = Timer(5, ext())
t.start()
Bitte helfen Sie mir, wie ich für mehrere Stunden festgefahren bin.
Die 'loop' Variable in' ext' ist lokal begrenzt. Sie können die Verwendung von 'global' erwägen. –
Stellen Sie sicher, dass Sie globale Variable mit' global loop' verwenden und dann 'loop = False'. – Li357
Sie müssen die Variable als global zuweisen. Überprüfen Sie [diese] (http://stackoverflow.com/questions/423379/using-global-variables-in-a-function-other-than-the-one-that-created-them) – MikeVelazco