Listes, passages de paramètres, et identiants 1 id
id(x)est un numéro associé à chaque objet Python.
D'après la documentation ocielle :
This is an integer (or long integer) which is guaranteed
to be unique and constant for this object during its lifetime.
Quelques essais
from copy import copy x = 1
id(x) y = x id(y) x = 2 id(x) y id(y)
L = [0, 1]
L1 = L
L2 = copy(L) L3 = L[:]
id(L), id(L1), id(L2), id(L3) L is L1
L is L2 L == L1 L == L2 L == L3
# Les listes sont modifiables (mutable) L = [0, 1, 2]
L1 = L id(L) L[0] = 5 id(L) L1
L = [0, 1]
L1 = L x = L[0]
L[0] = 5
x, L1
2 Une fonction...
def f(x):
...
return ...
f(y)
Que se passe-t-il quand on exécute 'f(y)' ? - Une variable locale xest créée.
-id(x)est initialisé avec la valeur deid(y). Autrement dit,y partage son identiant avecx.
Comme quand on exécute x=y.
Quand l'exécution de la fonction est terminée,xdisparait, pasy évidemment.
3 Et dans ce cas ?
def f(x):
...
return ...
f(x) Réponse
Il y a deux variables qui ont le même nom :
le 'x' local est initialisé avec la valeur de son homonyme.
A l'intérieur de la fonction, 'x' désigne toujours la variable locale.
4 Et dans ce cas ?
def f(x):
global x ...
return ...
Réponse Essayez...
5 Exemples
Exécutez les commandes l'une après l'autre.
Essayez de deviner ce que va répondre Python avant de vérier.