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
Barbara StreisandOriginal
2024-12-07 01:11:15561Durchsuche

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)

Erwartete Ausgabe:

{}
{}
{'hello': 'goodbye'}

Tatsächliche Ausgabe:

{'hello': 'goodbye'}
{'hello': 'goodbye'}
{'hello': 'goodbye'}

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)

Ausgabe:

{1: 2}
{1: 2, 3: 4}
  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)

Ausgabe:

{1: 2, 'nested': {3: 4}}
{1: 2, 'nested': {3: 4, 5: 6}}

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!

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