Das Hauptgeheimnis des else-Blocks in Python-Loops

Dies ist ein kurzer Artikel für Anfänger. Sicher wissen Sie, dass in Python for-Schleifen forund die whileEinheit bereitgestellt wird else. Und es gibt viel Verwirrung mit diesem Block, weil seine Aktion auf den ersten Blick nicht intuitiv ist. Sie müssen jedes Mal ein wenig Zeit aufwenden oder in die Dokumentation schauen, wenn sie auftaucht:



for f in files:
    if f.uuid == match_uuid:
        break
else:
    raise FileNotFound()


Wann wird es eine Ausnahme geben: Wenn die Datei nicht gefunden wird? Wann wurde es gefunden? Wann ist die Liste leer? Diese Frage ist schwer zu beantworten, da sich der Block elseauf derselben Ebene wie der Block befindet forund es sich anscheinend um eine Bedingung handelt, die mit der Liste selbst zusammenhängt. Zum Beispiel, als ich forkeine Aufzeichnungen gefunden habe. Es reicht jedoch aus, das Hauptgeheimnis des Blocks elsefür Schleifen zu kennen, um nie wieder Zeit damit zu verschwenden:



Der Block elsenach den Schleifen gehört nicht zur Schleife selbst, sondern zum Operator break!



In der Tat wird der Block elsein jedem Fall ausgeführt, es sei denn, die Ausführung der Schleife wurde vom Bediener unterbrochen break, returnoder raise.



Wenn Sie das obige Beispiel folgendermaßen lesen: "Wenn die Datei die von uns benötigte UUID hat, beenden Sie die Schleife, andernfalls wird eine Ausnahme ausgelöst", dann passt alles zusammen.




All Articles