Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich unerwartetes Verhalten mit veränderbaren Standardparametern in Python vermeiden?

Wie kann ich unerwartetes Verhalten mit veränderbaren Standardparametern in Python vermeiden?

Linda Hamilton
Freigeben: 2024-12-15 14:08:10
Original
528 Leute haben es durchsucht

How Can I Avoid Unexpected Behavior with Mutable Default Parameters in Python?

Probleme mit Standardparametern in Python vermeiden

Beim Arbeiten mit den Standardparametern von Python können bestimmte Komplexitäten auftreten, insbesondere bei veränderlichen Argumenten. Um diese Probleme zu verhindern, ist es wichtig, das Verhalten des Standardparameters zu ändern.

Betrachten Sie beispielsweise die folgende Funktion:

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

Beim ersten Aufruf funktioniert der Standardparameter der leeren Liste wie erwartet . Nachfolgende Aufrufe führen jedoch zu unerwartetem Verhalten, bei dem der Standardparameter, zunächst eine leere Liste, angehängte Elemente aus früheren Ausführungen beibehält.

Um dieses Problem zu beheben und bei jedem Funktionsaufruf eine neue leere Liste zu erstellen, bietet Python zwei Ansätze :

1. Test auf Keine:

def my_func(working_list=None):</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">if working_list is None: 
    working_list = []
working_list.append("a")
print(working_list)
Nach dem Login kopieren

2. Bedingte Zuweisung:

def my_func(working_list=None):</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">working_list = [] if working_list is None else working_list
working_list.append("a")
print(working_list)
Nach dem Login kopieren

Beide Lösungen stellen sicher, dass eine neue Eine leere Liste wird initialisiert, bevor Elemente an sie angehängt werden. Dadurch wird jeder Funktionsaufruf isoliert und eine Datenakkumulation aus dem vorherigen verhindert Hinrichtungen.

Das obige ist der detaillierte Inhalt vonWie kann ich unerwartetes Verhalten mit veränderbaren Standardparametern in Python vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Vorheriger Artikel:Warum zeigt pytz unerwartete Zeitzonenverschiebungen an und wie kann ich damit richtig umgehen? Nächster Artikel:Wie kann ich mit „subprocess.Popen“ effizient Multiprozess-Pipelines in Python erstellen?
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
Aktuelle Ausgaben
verwandte Themen
Mehr>
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage