2016-05-19 9 views
3

Angenommen, ich mache einen Funktionsaufruf und übergebe seinen Rückgabewert als Parameter an eine andere Funktion. Soll ich es so machen:Kann ich einen Funktionsaufruf als Parameter an eine andere Funktion übergeben? Python

value = self.__myFunction(self.parent.connectToVars.getCertainValue()) 

Oder so?

certainValue = self.parent.connectToVars.getCertainValue() 
value = self.__myFunction(certainValue) 

Persönlich neige ich dazu, die erste Wahl zu verwenden, da es nur 1 Zeile Code ist, und ich bin keine lokalen Variablen zu machen, die mich möglicherweise ablenken könnten, aber ich bin besorgt, wenn es ein Laufzeitfehler sein könnte oder es ist nur eine schlechte Übung.

+0

Wenn Sie mit 'securityValue' nichts weiter machen, als es an eine andere Funktion zu übergeben, dann brauchen Sie Ihren zweiten Ansatz überhaupt nicht zu verwenden. Es ist weder eine schlechte Übung, noch wird es irgendeine Art von Laufzeitfehler verursachen. – donkopotamus

+0

Sieht für mich ok aus. –

+0

Es ist in Ordnung. Vielleicht möchten Sie Zwischenvariablen einführen, wenn die Zeile für eine einfache menschliche Lesbarkeit zu lang oder zu verschachtelt wird, aber nichts bricht. – user2357112

Antwort

1

Die erste Option ist vollkommen in Ordnung, denken Sie daran, dass auf diese Weise der Rückgabewert der inneren Funktion später nicht zugänglich ist. Wenn die innere Funktion zeitaufwendig ist und Sie den Rückgabewert mehrmals verwenden möchten, ist es besser, sie in einer temporären Variablen zu speichern, damit Sie sie nicht jedes Mal von Anfang an berechnen müssen.

edit:

Wie Alex erwähnt, es ist in der Regel eine schlechte Praxis zu unnötig etwas mehrfach zu berechnen. Zusammenfassend, wenn Sie einen Rückgabewert einer Funktion mehrere Male verwenden Sie eine temporäre Variable für sie, sonst können Sie die erste Option verwenden.

+1

Auch wenn die Berechnung nicht teuer ist, ist die Logik dort so kompliziert, dass sie nicht wiederholt werden sollte. –

Verwandte Themen