Maison > développement back-end > Tutoriel Python > Python est-il un passage par valeur ou un passage par référence, et comment puis-je obtenir un comportement de passage par référence ?

Python est-il un passage par valeur ou un passage par référence, et comment puis-je obtenir un comportement de passage par référence ?

Mary-Kate Olsen
Libérer: 2024-12-26 05:05:11
original
340 Les gens l'ont consulté

Is Python Pass-by-Value or Pass-by-Reference, and How Can I Achieve Pass-by-Reference Behavior?

Passer des variables par référence en Python

Lors de l'écriture d'une classe à des fins de test, vous avez remarqué que les paramètres en Python semblent être passés par valeur plutôt que par référence. Cet article clarifiera si votre hypothèse est correcte et vous guidera dans l'implémentation du passage par référence en Python.

Comprendre le passage par valeur et la référence

En Python, les arguments sont passés par référence , ce qui signifie qu'une référence à l'objet est transmise à la fonction. Cependant, cette référence est passée par valeur. Ce comportement est dû à la différenciation entre les types de données mutables et immuables.

Types de données mutables et immuables

  • Types de données mutables : Ces types de données peuvent être modifiés. en place. Les exemples incluent des listes, des dictionnaires et des objets définis par l'utilisateur. La modification de ces types au sein d'une fonction reflète les modifications apportées à l'objet d'origine.
  • Types de données immuables : Ces types de données ne peuvent pas être modifiés sur place. Les chaînes, les entiers et les tuples entrent dans cette catégorie. La modification de ces types n'affecte pas l'objet d'origine.

Exemple avec des listes mutables

Considérons l'exemple suivant :

def try_to_change_list_contents(the_list):
    the_list.append('four')

outer_list = ['one', 'two', 'three']
try_to_change_list_contents(outer_list)
print(outer_list)
Copier après la connexion

Puisque les listes sont mutables, les le paramètre the_list est une référence à l’objet external_list. En ajoutant « quatre » à the_list, la liste_extérieure est également modifiée.

Exemple avec des chaînes immuables

En revanche, considérons cet exemple avec des chaînes :

def try_to_change_string(my_string):
    my_string = 'Changed'

outer_string = 'Original'
try_to_change_string(outer_string)
print(outer_string)
Copier après la connexion

Malgré le changement la variable my_string dans la fonction, la external_string reste inchangée. Cela se produit car les chaînes sont immuables et ne peuvent pas être modifiées sur place.

Passage par référence en Python

Pour imiter le passage par référence, où la variable d'origine est modifiée, il existe quelques options :

1. Renvoyer une nouvelle valeur : La fonction peut renvoyer une nouvelle valeur, qui peut être attribuée à la variable d'origine en dehors de la fonction.

2. Modification de l'attribut de l'objet : Si la variable est un objet, la fonction peut modifier l'un de ses attributs, qui sera reflété dans l'objet d'origine.

3. Utilisation de listes ou de wrappers : Vous pouvez envelopper la variable dans une liste et transmettre la liste à la fonction. La modification de la liste affectera la variable d'origine.

En comprenant les mécanismes de passage par valeur et de référence, vous pouvez modifier efficacement les variables en Python comme vous le souhaitez.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal