Heim > Backend-Entwicklung > Python-Tutorial > Wie funktioniert die Objektzuweisung in Python und wie kann ich unabhängige Kopien erstellen?

Wie funktioniert die Objektzuweisung in Python und wie kann ich unabhängige Kopien erstellen?

Barbara Streisand
Freigeben: 2024-12-07 01:11:15
Original
552 Leute haben es durchsucht

How Does Python's Object Assignment Work, and How Can I Create Independent Copies?

Objektzuweisung in Python verstehen

In Python erstellen Zuweisungsoperatoren wie = keine Kopien von Objekten. Stattdessen verweisen sie auf vorhandene Objekte im Speicher. Dieses Verhalten kann zu unbeabsichtigten Folgen führen, wie im folgenden Code gezeigt:

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

In diesem Beispielsweise erwarteten wir, drei unabhängige Wörterbücher zu erstellen. Das Ergebnis zeigt jedoch, dass dict_a, dict_b und dict_c alle auf dasselbe Wörterbuchobjekt verweisen. Durch das Zuweisen eines Schlüssels zu dict_c wird das gemeinsame Wörterbuch geändert, was sich in allen drei Variablen widerspiegelt.

Probleme bei der Objektzuweisung lösen

Um das gewünschte Verhalten beim Erstellen unabhängiger Kopien zu erreichen, bietet Python mehrere Optionen:

  1. dict.copy()-Methode: Diese Methode erstellt eine flache Kopie des Wörterbuchs und kopiert alle seine Schlüssel-Wert-Paare in ein neues Objekt.
dict_a = {1: 2}
dict_b = dict_a.copy()
dict_b[3] = 4

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

Ausgabe:

{1: 2}
{1: 2, 3: 4}
Nach dem Login kopieren
  1. copy.deepcopy()-Funktion: Diese Funktion Erstellt eine tiefe Kopie des Wörterbuchs, einschließlich aller verschachtelten Objekte.
import copy

dict_a = {1: 2, 'nested': {3: 4}}
dict_b = copy.deepcopy(dict_a)
dict_b['nested'][5] = 6

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

Ausgabe:

{1: 2, 'nested': {3: 4}}
{1: 2, 'nested': {3: 4, 5: 6}}
Nach dem Login kopieren

Durch die Verwendung dieser Methoden ist es möglich, die Objektzuweisung in Python zu steuern und unbeabsichtigte Änderungen an gemeinsam genutzten Objekten zu verhindern.

Das obige ist der detaillierte Inhalt vonWie funktioniert die Objektzuweisung in Python und wie kann ich unabhängige Kopien erstellen?. 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