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.
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.
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)
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.
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)
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.
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!