Heim > Backend-Entwicklung > Python-Tutorial > Erstellt die Python-Zuweisung Kopien oder Verweise auf Objekte?

Erstellt die Python-Zuweisung Kopien oder Verweise auf Objekte?

Susan Sarandon
Freigeben: 2024-12-19 12:25:14
Original
212 Leute haben es durchsucht

Does Python Assignment Create Copies or References to Objects?

Weist Python Referenzen oder Kopien zu?

Problem:

Pythons Zuweisungsverhalten kann verwirrend sein, wenn mit Objekten wie z. B. gearbeitet wird Wörterbücher. Betrachten Sie den folgenden Code:

dict_a = dict_b = dict_c = {}
dict_c['hello'] = 'goodbye'

print(dict_a)
print(dict_b)
print(dict_c)
Nach dem Login kopieren

Erwartete Ausgabe:

{}
{}
{'hello': 'goodbye'}
Nach dem Login kopieren

Tatsächliche Ausgabe:

{'hello': 'goodbye'}
{'hello': 'goodbye'}
{'hello': 'goodbye'}
Nach dem Login kopieren

Erklärung:

Python-Variablen beziehen sich auf Objekte im Speicher. Wenn Sie dict_a = dict_b zuweisen, kopieren Sie nicht das Wörterbuchobjekt selbst, sondern weisen stattdessen einen Verweis auf dieselbe Speicheradresse wie dict_b zu. Das bedeutet, dass an einem Wörterbuch vorgenommene Änderungen sich auf alle drei Variablen auswirken, da sie auf dasselbe zugrunde liegende Objekt verweisen.

Lösung:

Um eine echte Kopie eines zu erstellen Um ein Objekt in Python zu erstellen, müssen Sie die Funktionen copy oder copy.deepcopy verwenden. Der folgende Code erstellt unabhängige Kopien des Originalwörterbuchs:

dict_a = dict_b.copy()  # Shallow copy
dict_a = copy.deepcopy(dict_b)  # Deep copy
Nach dem Login kopieren
  • Flache Kopie: Erstellt ein neues Wörterbuch, das auf dieselben verschachtelten Objekte wie das Original verweist.
  • Deep Copy: Erstellt ein neues Wörterbuch und kopiert alle verschachtelten Elemente rekursiv Objekte.

Durch die Verwendung dieser Funktionen können Sie sicherstellen, dass Änderungen an einem Wörterbuch keine Auswirkungen auf die anderen haben.

Das obige ist der detaillierte Inhalt vonErstellt die Python-Zuweisung Kopien oder Verweise auf Objekte?. 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