"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Quand Python utilise-t-il l'appel par référence et l'appel par référence d'objet ?

Quand Python utilise-t-il l'appel par référence et l'appel par référence d'objet ?

Publié le 2024-11-08
Parcourir:187

When Does Python Use Call by Reference and Call by Object Reference?

Appel de fonctions Python par référence (dupliquer)

Dans de nombreux langages de programmation, les paramètres peuvent être transmis par valeur ou par référence à l'aide de mots réservés spécifiques . Cependant, en Python, lorsqu'un paramètre est passé à une fonction, il ne modifie jamais la valeur de la variable d'origine dans la fonction appelante.

Exemple 1 : Appel par valeur

k = 2

def foo(n):
    n *= n
    return n

j = foo(k)
print(j)  # 4
print(k)  # 2

Ici, la valeur de k reste inchangée après l'appel de la fonction foo car Python passe les arguments par valeur.

Exemple 2 : Appel par Global

Pour modifier la variable dans la fonction appelante, le mot-clé global peut être utilisé.

n = 0

def foo():
    global n
    n *= n
    return n

Dans ce cas, le mot-clé global permet de modifier n dans la fonction foo, et sa valeur sera mise à jour dans la fonction appelante.

Pass by Object Reference in Python

Python, cependant, ne suit pas strictement l'appel par valeur ou l'appel par référence. Au lieu de cela, il utilise un concept appelé passer par référence d'objet.

En Python, les variables font référence à des objets, et non aux objets eux-mêmes. Ainsi, lorsqu'une variable est passée à une fonction, elle transmet une référence à l'objet, et non à l'objet lui-même.

Par exemple :

def append_one(li):
    li.append(1)

x = [0]
append_one(x)
print(x)  # [0, 1]

Dans ce code, la fonction append_one ajoute 1 à la liste x. Étant donné que la liste est transmise par référence d'objet, toute modification apportée à la liste dans la fonction sera reflétée dans la fonction appelante.

Pass by Reference vs Pass by Object Reference

  • Pass by reference : La boîte de la variable d'origine est transmise à la fonction appelée, permettant à toute modification apportée au contenu de la variable d'être reflétée dans la fonction appelante. function.
  • Pass by object reference: Une référence à la boîte de l'objet d'origine est transmise à la fonction appelée. Les modifications apportées à l'objet sont reflétées à la fois dans les fonctions appelantes et appelées, mais les modifications apportées à la variable elle-même (la boîte) ne le sont pas.

En conclusion, Python suit le passage par référence d'objet, où les variables font référence à des objets plutôt que des objets eux-mêmes. Cela permet aux fonctions de modifier les objets qui leur sont transmis, mais les modifications apportées aux références de variables elles-mêmes ne sont pas propagées à la fonction appelante.

Déclaration de sortie Cet article est réimprimé à l'adresse : 1729140861. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3