Passer des variables par référence en Python
Les arguments Python sont passés par valeur, où la fonction appelée reçoit une copie de la variable d'origine. Ceci est différent de l'appel par référence, où la fonction reçoit une référence à la variable d'origine et peut la modifier directement.
Variables mutables ou immuables
Dans Python, certains types de données sont mutables (par exemple, les listes, les dictionnaires) tandis que d'autres sont immuables (par exemple les chaînes). Lors du passage d'une variable mutable, la fonction peut modifier son contenu, mais lors du passage d'une variable immuable, la fonction ne peut pas la modifier.
Comportement de passage par valeur en Python
À titre d'exemple, considérons le code suivant :
class PassByReference: def __init__(self): self.variable = 'Original' self.change(self.variable) print(self.variable) def change(self, var): var = 'Changed'
Lorsqu'une instance de cette classe est créée, le résultat est "Original". En effet, le paramètre "var" dans la méthode "change" est une copie de l'attribut "variable" et toute modification apportée à "var" dans la méthode n'affecte pas la variable d'origine en dehors de la méthode.
Solutions de contournement pour le comportement de passage par référence
Bien que Python ne prenne pas directement en charge l'appel par référence, il existe des solutions de contournement pour simuler cela comportement.
Valeur de retour :
La fonction peut renvoyer la variable modifiée, qui peut ensuite être affectée à la variable d'origine en dehors de la fonction.
Classes ou listes wrapper :
Des classes ou listes wrapper mutables peuvent être utilisées pour contenir la variable. En passant le wrapper à la fonction, la fonction peut modifier la variable détenue et les modifications seront reflétées dans le wrapper lorsqu'elle sera renvoyée.
Conclusion
Pendant que Python ne prend pas en charge les véritables appels par référence, les solutions de contournement fournies permettent aux développeurs de simuler ce comportement pour les types de données mutables et immuables, permettant une plus grande flexibilité dans la conception du code.
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!