Ich habe eine Funktion, bei der ich etwas mit einem String machen muss. Ich benötige die Funktion, um einen Booleschen Wert zurückzugeben, der angibt, ob die Operation erfolgreich war oder nicht, und ich muss auch die geänderte Zeichenfolge zurückgeben.
In C # würde ich einen out-Parameter für die Zeichenfolge verwenden, aber in Python gibt es keine Entsprechung. Ich bin noch sehr neu in Python und das einzige, was ich mir vorstellen kann, ist, ein Tupel mit dem booleschen und modifizierten String zurückzugeben.
Verwandte Frage: Ist es für eine Funktion pythonisch, mehrere Werte zurückzugeben?
Antworten:
def f(in_str): out_str = in_str.upper() return True, out_str # Creates tuple automatically succeeded, b = f("a") # Automatic tuple unpacking
quelle
Warum nicht eine Ausnahme auslösen, wenn die Operation nicht erfolgreich war? Persönlich bin ich eher der Meinung, dass Sie, wenn Sie mehr als einen Wert von einer Funktion zurückgeben müssen, überlegen sollten, ob Sie die Dinge richtig machen oder ein Objekt verwenden.
Aber direkter auf den Punkt gebracht: Wenn Sie eine Ausnahme auslösen, zwingen Sie sie, sich mit dem Problem zu befassen. Wenn Sie versuchen, einen Wert zurückzugeben, der auf einen Fehler hinweist, ist es sehr gut möglich, dass jemand den Wert nicht überprüfen kann und möglicherweise schwer zu debuggende Fehler auftreten.
quelle
Gib ein Tupel zurück.
def f(x): # do stuff return (True, modified_string) success, modified_string = f(something)
quelle
(
und)
wann Multi Werte zurückgeben wollen. Wenn ich Code in Pycharm schreibe, zeigt die Idee das Abnutzen in Zeilen, in denen mehrere Werte zurückgegeben werden()
, aber wir können die Codestilregel bei pep8 nicht finden. Wie denkst du darüber? Vielen Dank.Das Zurückgeben eines Tupels ist in Python die übliche Methode.
quelle
Das Auslösen einer Fehlerausnahme ist eine gute Möglichkeit, um fortzufahren. Wenn Sie viele verschiedene Werte zurückgeben, können Sie ein Tupel zurückgeben. Für den speziellen Fall, den Sie zitieren, verfolge ich häufig einen Zwischenansatz: Geben Sie die geänderte Zeichenfolge bei Erfolg zurück und bei Fehler keine zurück. Ich bin genug von einem nicht rekonstruierten C-Programmierer, um bei einem Fehler einen NULL-Zeiger auf char zurückgeben zu wollen.
Wenn ich eine Routine schreiben würde, die als Teil einer größeren Bibliothek verwendet und von anderen Entwicklern verwendet werden soll, würde ich bei einem Fehler eine Ausnahme auslösen. Wenn ich mein eigenes Hundefutter esse, werde ich wahrscheinlich verschiedene Arten zurückgeben und bei der Rückkehr testen.
quelle
Sie können die return-Anweisung mit mehreren Ausdrücken verwenden
quelle