Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich unerwartetes Verhalten bei der Verwendung von Standardparametern in Python-Funktionen vermeiden?

Wie kann ich unerwartetes Verhalten bei der Verwendung von Standardparametern in Python-Funktionen vermeiden?

Mary-Kate Olsen
Freigeben: 2024-12-17 04:08:25
Original
928 Leute haben es durchsucht

How Can I Avoid Unexpected Behavior When Using Default Parameters in Python Functions?

Fehler bei Standardparametern in Python vermeiden

In Python kann es verlockend sein, eine leere Liste als Standardparameter zu verwenden. Dies kann jedoch aufgrund der frühen Bindung von Standardparametern zu unerwartetem Verhalten führen.

Stellen Sie sich eine Funktion wie diese vor:

def my_func(working_list=[]):
    working_list.append("a")
    print(working_list)
Nach dem Login kopieren

Zunächst funktioniert der Standardparameter wie erwartet. Nachfolgende Aufrufe aktualisieren jedoch weiterhin dieselbe Liste, was zu einer gedruckten Liste führt, die mit jedem Aufruf wächst.

Um dies zu vermeiden, testen Sie explizit, ob der Standardparameter im Funktionskörper vorhanden ist, und weisen Sie ggf. eine neue leere Liste zu notwendig:

def my_func(working_list=None):
    if working_list is None:
        working_list = []
    working_list.append("a")
    print(working_list)
Nach dem Login kopieren

Alternativ können Sie a Einzeiler:

working_list = [] if working_list is None else working_list
Nach dem Login kopieren

Nebenbei: PEP 8 empfiehlt die Verwendung von is None für Vergleiche mit Singletons wie None. Vermeiden Sie die Verwendung von == None, da dies zu fehlerhaften Ergebnissen führen kann.

Das obige ist der detaillierte Inhalt vonWie kann ich unerwartetes Verhalten bei der Verwendung von Standardparametern in Python-Funktionen vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage