Heim >Backend-Entwicklung >Python-Tutorial >Wie unterscheiden sich flaches und tiefes Kopieren in Python?

Wie unterscheiden sich flaches und tiefes Kopieren in Python?

Susan Sarandon
Susan SarandonOriginal
2024-11-07 05:22:03687Durchsuche

How do Shallow and Deep Copying Differ in Python?

Kopieren von Objekten in Python

Das Erstellen einer unabhängigen Kopie eines Objekts ist eine häufige Aufgabe in der Programmierung. In Python gibt es zwei Hauptmethoden zum Kopieren eines Objekts: flaches Kopieren und tiefes Kopieren.

Flaches Kopieren

Pythons Standardkopiermechanismus ist flaches Kopieren. Dies bedeutet, dass ein neues Objekt mit einer Referenz auf dieselben Felder wie das ursprüngliche Objekt erstellt wird. Alle an den Feldern des neuen Objekts vorgenommenen Änderungen werden auch im Originalobjekt widergespiegelt.

Deep Copying

Deep Copy hingegen erstellt ein neues Objekt mit separaten Kopien der Felder vom Originalobjekt. Dies bedeutet, dass sich alle an den Feldern des neuen Objekts vorgenommenen Änderungen nicht auf das ursprüngliche Objekt auswirken.

Um eine vollständig tiefe unabhängige Kopie eines Objekts in Python zu erhalten, können Sie die Kopie verwenden .deepcopy()-Funktion. Hier ist ein Beispiel:

<code class="python">import copy

# Original object
obj = {
    "name": "Alice",
    "age": 20
}

# Create a shallow copy
shallow_copy = obj

# Create a deep copy
deep_copy = copy.deepcopy(obj)

# Modify the shallow copy
shallow_copy["name"] = "Bob"

# Print the original and deep copy
print(obj)  # Output: {'name': 'Bob', 'age': 20}
print(deep_copy)  # Output: {'name': 'Alice', 'age': 20}</code>

Wie Sie sehen können, behält die tiefe_Kopie die ursprünglichen Werte des Objekts bei, während die flache_Kopie von den am ursprünglichen Objekt vorgenommenen Änderungen betroffen ist.

Das obige ist der detaillierte Inhalt vonWie unterscheiden sich flaches und tiefes Kopieren in Python?. 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