Wie elegant ignorieren einige Rückgabewerte eine Python-Funktion?
Manchmal eine Funktion gibt einen Wert zurück, die Sie würde nur wollen, um Sie zu verwerfen, anstatt senden an die Ausgabe-stream. Was wäre der elegante Weg, dies zu behandeln?
Beachten Sie, dass wir reden über eine Funktion, die etwas zurückgibt, was Sie nicht ändern können.
def fn():
return 5
Ich persönlich verwendet haben null
vor, aber ich bin auf der Suche nach mehr pythonic way:
null = fn()
- Was meinst du mit "senden an die Ausgabe-stream"?
- Nur die Bewertung
fn()
im globalen Rahmen würde "drucken" den Wert 5. - Das ist nur wahr im interaktiven interpreter. Es wird nicht auftreten, wenn Sie eine Datei als script, und es ist nicht wirklich Einfluss, nichts. Ich glaube nicht, dass die Notwendigkeit zu unterdrücken, um die Ausgabe in eine interaktive Sitzung ist ein genügend großes Angebot zu garantieren, etwas mehr als die Lösung, die Sie bereits haben.
- Wenn Sie müssen, verwenden Sie
_ = fn()
. - Ah, nur im interaktiven interpreter dann. Gut, in der Prüfung bin ich jetzt drucken jede Menge Mist. Es wäre gut zu wissen, im Allgemeinen einen Weg, es zu vermeiden. Auch in Funktionen, die nicht drucken (speichern in einer variable, oder nicht mit dem interpreter) könnte gut ein pythonic Weg, um zu zeigen, dass das Ergebnis einer Funktion ist nicht wichtig.
- Ich denke, das könnte eine/die Antwort?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den standard-Weg, dies zu zeigen ist, weisen die Ergebnisse, die Sie nicht wollen, um
_
. Zum Beispiel, wenn eine Funktion gibt zwei Werte, aber Sie wollen nur das erste, dies zu tun:Meisten Python-linters erkennt die Verwendung von
_
und beschweren sich nicht über nicht verwendete Variablen.Wenn Sie wollen, ignorieren alle gibt, dann einfach nicht zuordnen nichts; Python nicht alles tun, mit dem Ergebnis, es sei denn, Sie sagen es. Drucken das Ergebnis ist eine Funktion in der Python-shell nur.
del _
im REPL, erhalten Sie einen Fehler, denn es ist keine variable).Ich mag die Idee, die Zuordnung zu null - aber es hat einen unerwarteten Nebeneffekt:
Für diejenigen, die code hauptsächlich in Python, dies ist wahrscheinlich nicht ein Problem: die null sollte nur so viel junk-Wert als _.
Allerdings, wenn Sie Umschalten zwischen anderen Sprachen, wie Javascript, ist es möglich, versehentlich schreiben Sie ein Vergleich mit null anstelle von None. Statt spucken die üblichen Fehler über den Vergleich mit einer unbekannten variable, Python wird nur schweigend akzeptieren es, und jetzt sind Sie immer true und false bei Bedingungen, die Sie absolut nicht erwarten... dies ist die Art von Fehler, wo Sie starren auf den code für eine Stunde und kann nicht herausfinden, wth ist falsch, bis er plötzlich auf Sie und fühlen Sie sich wie ein idiot.
Den offensichtlichen fix funktioniert nicht, entweder:
...das ist wirklich enttäuschend. Python (und jede andere Sprache auf dem Planeten) ermöglicht alle der Parameter für implizit weggeworfen werden, unabhängig davon, wie viele Variablen werden zurückgegeben:
...aber explizit wegwerfen Parameter, indem Sie Sie Keine ist das nicht erlaubt?
Fühlt es sich irgendwie blöd von den Python-interpreter zu charakterisieren, die Zuordnung zu kein, da ein syntax-Fehler, sondern als eine absichtliche Wahl ein eindeutiges Ergebnis. Kann jeder denken, der eine Begründung dafür?