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)
Erwartete Ausgabe:
{} {} {'hello': 'goodbye'}
Tatsächliche Ausgabe:
{'hello': 'goodbye'} {'hello': 'goodbye'} {'hello': 'goodbye'}
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
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!