Heim >Backend-Entwicklung >Python-Tutorial >Warum wirkt sich das Ändern einer Kopiervariablen auf die Originalvariable in Python aus?

Warum wirkt sich das Ändern einer Kopiervariablen auf die Originalvariable in Python aus?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-14 19:11:13679Durchsuche

Why Does Changing a Copy Variable Affect the Original Variable in Python?

Python: Warum sich das Ändern einer Kopiervariablen auf die Originalvariable auswirkt

In Python kann es zu einem eigenartigen Verhalten kommen, wenn Änderungen an einer Kopie vorgenommen werden Variable scheint auch die ursprüngliche Variable zu verändern. Dies liegt daran, dass Python-Variablen Referenzen statt tatsächlicher Werte speichern.

Um dies zu verstehen, betrachten Sie die beschriebene Situation:

org_list = ['y', 'c', 'gdp', 'cap']
copy_list = org_list       # Pass reference to org_list
copy_list.append('hum')

print(copy_list)           # ['y', 'c', 'gdp', 'cap', 'hum']
print(org_list)            # ['y', 'c', 'gdp', 'cap', 'hum']

Wenn Sie copy_list zu org_list zuweisen, erstellen Sie keine neue Liste sondern vielmehr wird ein Verweis auf dasselbe Listenobjekt im Speicher erstellt. Daher wirken sich alle Änderungen an copy_list oder org_list direkt auf beide Variablen aus.

Um eine wirklich unabhängige Kopie zu erstellen, müssen Sie eine Kopie der tatsächlichen Daten und keine Referenz übergeben. Dies kann mithilfe des Slice-Zuweisungsoperators erfolgen:

copy_list = org_list[:]    # Create a deep copy by slicing

Durch das Slicen der ursprünglichen Liste erstellen Sie ein neues Listenobjekt mit einer eigenen Kopie der Daten. Alle an copy_list vorgenommenen Änderungen wirken sich nicht auf org_list aus und umgekehrt.

Das obige ist der detaillierte Inhalt vonWarum wirkt sich das Ändern einer Kopiervariablen auf die Originalvariable in Python aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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