Entscheidung zwischen „try“- und „if“-Konstrukten in Python
Beim Testen, ob eine Variable einen Wert hat, wählen Sie zwischen „try“ oder „Wenn“-Konstrukte können umstritten sein. Schauen wir uns die Gründe für die einzelnen Ansätze genauer an.
EAFP (Easier to Ask for Forgiveness than Permission) vs. LBYL (Look Before You Leap)
Python fördert EAFP über LBYL. EAFP beinhaltet das Ausprobieren einer Operation und das Abfangen von Ausnahmen, wenn diese auftreten. Bei LBYL hingegen geht es darum, die Bedingungen im Voraus zu prüfen, bevor der Vorgang ausgeführt wird.
Überlegungen zur Effizienz und Lesbarkeit
Der Effizienzaspekt hängt von der erwarteten Häufigkeit von Ausnahmen ab. Wenn Ausnahmen selten sind, kann der Overhead von Try/Except-Blöcken durch die Geschwindigkeit von If-Anweisungen zunichte gemacht werden. Wenn jedoch Ausnahmen häufiger auftreten, ist try/exclusive möglicherweise schneller, da dadurch der Aufwand für Bedingungsprüfungen in if-Anweisungen vermieden wird.
Beispiel
Bedenken Sie den folgenden Code prüft, ob eine Funktion eine Liste zurückgibt:
result = function() if result: for r in result: # Process items
result = function() try: for r in result: # Process items except TypeError: pass
Wenn „Ergebnis“ wahrscheinlich die meiste Zeit eine Liste ist, ist der Try/Except-Ansatz effizienter. Wenn „Ergebnis“ jedoch häufig None ist, ist die if-Anweisung vorzuziehen.
Zeitmessungen
Zeitmessungen zeigen, dass Try/Except schneller ist, wenn Ausnahmen wirklich außergewöhnlich sind , während if-Anweisungen schneller sind, wenn Bedingungen allgemein erfüllt sind.
Schlussfolgerung
Die Entscheidung zwischen „versuchen“ und „wenn“ hängt ab von:
Im Allgemeinen kann EAFP (try/exclusive) eher „pythonisch“ sein " Ansatz, insbesondere wenn Ausnahmen selten sind. Allerdings sind LBYL (if-Anweisungen) möglicherweise besser geeignet, wenn Ausnahmen häufig vorkommen.
Das obige ist der detaillierte Inhalt vonWann sollten Sie „try' und wann „if' in Python verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!