Dies ist ein kurzer Artikel für Anfänger. Sicher wissen Sie, dass in Python for-Schleifen for
und die while
Einheit 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 else
auf derselben Ebene wie der Block befindet for
und es sich anscheinend um eine Bedingung handelt, die mit der Liste selbst zusammenhängt. Zum Beispiel, als ich for
keine Aufzeichnungen gefunden habe. Es reicht jedoch aus, das Hauptgeheimnis des Blocks else
für Schleifen zu kennen, um nie wieder Zeit damit zu verschwenden:
Der Block else
nach den Schleifen gehört nicht zur Schleife selbst, sondern zum Operator break
!
In der Tat wird der Block else
in jedem Fall ausgeführt, es sei denn, die Ausführung der Schleife wurde vom Bediener unterbrochen break
, return
oder 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.