Funktion mit abhängigen voreingestellten Argumenten

8

Bitte beachten Sie die einfache Funktion:

%Vor%

Wo param1 und param2 nicht erforderlich sein sollten, aber vom Benutzer festgelegt werden können. Wenn param2 nicht gesetzt ist, hängt der Wert in gewisser Weise von param1 ab.

Das obige Beispiel erhöht NameError: name 'param1' is not defined

Gibt es eine Möglichkeit, diese Art von Aufgaben in Python zu erledigen?

    
theta 17.01.2012, 19:12
quelle

1 Antwort

12

Eine Möglichkeit besteht darin, dies innerhalb der Funktion zu emulieren:

%Vor%

Wenn param2=None eine gültige Eingabe in fun() ist, könnte die folgende Alternative eine bessere Alternative sein:

%Vor%

(Nachdem ich dieses zweite Beispiel für ein paar Minuten angeschaut habe, mag ich die is default -Syntax sehr.)

Der Grund, warum die ursprüngliche Version nicht funktioniert, besteht darin, dass die Standardwerte zur Zeit der Funktionsdefinition berechnet und gebunden werden. Dies bedeutet, dass Sie keinen Standardwert haben können, der von etwas abhängt, das nicht bekannt ist, bis die Funktion aufgerufen wird (in Ihrem Fall der Wert von param1 ).

    
NPE 17.01.2012, 19:13
quelle

Tags und Links