Maison >développement back-end >Tutoriel Python >Pourquoi la modification d'une variable de copie affecte-t-elle la variable d'origine en Python ?

Pourquoi la modification d'une variable de copie affecte-t-elle la variable d'origine en Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-14 19:11:13680parcourir

Why Does Changing a Copy Variable Affect the Original Variable in Python?

Python : Pourquoi la modification d'une variable de copie affecte la variable d'origine

En Python, vous pouvez rencontrer un comportement particulier où les modifications apportées à une copie La variable semble également modifier la variable d'origine. Cela se produit parce que les variables Python stockent des références plutôt que des valeurs réelles.

Pour comprendre cela, considérons la situation décrite :

org_list = ['y', 'c', 'gdp', 'cap']
copy_list = org_list       # Pass reference to org_list
copy_list.append('hum')

print(copy_list)           # ['y', 'c', 'gdp', 'cap', 'hum']
print(org_list)            # ['y', 'c', 'gdp', 'cap', 'hum']

Lorsque vous attribuez copy_list à org_list, vous ne créez pas de nouvelle liste mais plutôt en établissant une référence au même objet de liste en mémoire. Par conséquent, toute modification apportée à copy_list ou org_list affecte directement les deux variables.

Pour créer une copie véritablement indépendante, vous devez transmettre une copie des données réelles, plutôt qu'une référence. Cela peut être fait en utilisant l'opérateur d'affectation de tranche :

copy_list = org_list[:]    # Create a deep copy by slicing

En découpant la liste d'origine, vous créez un nouvel objet de liste avec sa propre copie des données. Toute modification apportée à copy_list n'affectera pas org_list, et vice versa.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn