Standardwert in einer Funktion in Python [duplizieren]

8

Ich bemerke Folgendes:

%Vor%

Ist das das richtige Verhalten?

    
rs1 22.02.2010, 18:20
quelle

3 Antworten

11

Ja, es ist richtiges Verhalten.

Aus Ihrer Frage geht jedoch hervor, dass Sie nicht erwartet haben.

Wenn Sie möchten, dass es Ihren Erwartungen entspricht, beachten Sie Folgendes:

Regel 1. Verwenden Sie keine veränderbaren Objekte als Standardwerte.

%Vor%

Erstellt kein neues Listenobjekt. Das Standardlistenobjekt für arg wird überall freigegeben.

Ähnliches

%Vor%

erstellt kein neues dict-Objekt. Dieses Standard-Diktat wird geteilt.

%Vor%

Dies ist eine gängige Methode, um einen Standardargumentwert anzugeben, bei dem es sich um ein neues, leeres Listenobjekt handelt.

    
S.Lott 22.02.2010 18:23
quelle
4

Das ist ein klassischer Fallstrick. Siehe Ссылка , Abschnitt 5: "Änderbare Standardargumente"

    
unutbu 22.02.2010 18:24
quelle
1

Machen Sie immer dann Funktionen wie diese:

%Vor%

Alternativ könnten Sie auch data = data or [] verwenden, aber das verhindert, dass der Benutzer leere -Parameter ( '' , 0 , False usw.) weitergibt.

    
poke 22.02.2010 18:34
quelle

Tags und Links