Die Python-Bedingte Return-Anweisung Ist Die Pythonic?
Welche der folgenden ist der richtige Weg, um wieder etwas mit Python bei der Verwendung von konditionalen? Spielt es eine Rolle? Und warum?
# OPTION 1
if conditional:
return a
else:
return b
# OPTION 2
if conditional:
return a
return b
- die andere ist redundant
- Ich bin nicht sicher, dass Sie verstehen, was syntaktisch korrekt bedeutet .. oder von deinem Lehrer nicht
- Technisch sind Sie beide syntaktisch gültig ist.
- Beide sind vollkommen gültig, und wahrscheinlich produzieren alias p-code. Wenn
conditional
ist ein echter boolescher Ausdruck (nicht nur eine unterschiedliche Art interpretiert als boolean), dannreturn condition
klarer wäre, aber wahrscheinlich auch identischen output. - Ich befestigte den Frage-Titel, ich meinte, das die meisten Pythonic, oder der best-practice-Weg, es zu tun.
- Ich bevorzuge die else-Anweisung, wie es ist expliziter, die es gibt b, wenn Bedingung nicht erfüllt. Vor allem, wenn es mehr code, vor dem "return b" dann könnte es leicht sein, zu übersehen, die ersten "abkürzens" return-Anweisung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den richtige Python Weg wäre:
"Einfach ist besser als Komplex" erinnern? 🙂
Bezüglich Ihrer bearbeiteten Frage, die ich benutzen würde
# OPTION 2
weil "Flach ist besser als verschachtelte." und diese Lösung spart eine Einrückung. Sie werden wissen dies zu schätzen, wenn:ist eigentlich so etwas wie:
Neben der
else:
in diesem Fall unnötig ist (sowohl syntaktisch als auch optisch) und redundant; es wird einfach verschwendet Speicherplatz.Sagte, möchten Sie vielleicht zu prüfen, mit einem bedingten Ausdruck statt:
Dies ist eine sehr übersichtliche und elegante alternative, wenn
a
,conditional
, undb
sind alle nett und kurz.conditional
nicht die Ausbeute eines strikten booleschen Wert und das wollen Sie, dannreturn bool(conditional)
conditional
ist ein boolescher Ausdruck. Wenn es einen Ausdruck gibt einen nicht-boolschen Wert, der interpretiert werden als "boolean", dann die OP ' s Bau (von beiden) ist notwendig.bool
selbst wegwirft, die Informationen. kindall ' s Kommentar nur darauf hin, dass Sie die Wahl haben, es zu tun, wenn Sie wollen, ohne zusätzliche Komplexität im OP-code.Glaube ich, dass dies eine Fangfrage. Die erste ist nicht syntaktisch korrekt:
In Python, ein
else
- Klausel, wie alles andere, stellt eine suite, hat bis Ende im:
Charakter.Wenn Sie die beheben, dann sind Sie beide syntaktisch gültig ist, und sowohl semantisch als sinnvoll. In der Tat, Sie bedeuten die gleiche Sache. Sie werden selbst kompilieren, um fast den gleichen code, außer dass die erste, die verursachen könnten, Python generieren Sie zusätzlichen code für eine Dritte "fallen aus dem Ende der Funktion" Fall, der niemals aufgerufen wird.
Aber, wie iCodez Antwort erklärt, diese beiden sind ein anti-pattern; nur
return conditional
oderreturn bool(conditional)
als angemessen.Beachten Sie, dass selbst in dem Fall, wo die Bewertung
conditional
eine Ausnahme auslöst, wird die verschiedenen Möglichkeiten sind noch alle gleichwertig (bis auf den Inhalt der traceback)—Sie werden alle einfach zu erheben, die Ausnahme.