Bonjour

Je me pose cette question: que fait concrètement id() ???

Voici ce que dit la doc
Citation Envoyé par python
id(...)
id(object) -> integer

Return the identity of an object. This is guaranteed to be unique among
simultaneously existing objects. (Hint: it's the object's memory address.)
Donc là je ne me trompe pas. Je lis bien "c'est l'adresse mémoire de l'objet".

Ensuite je fais quelques tests
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
>>> a=5
>>> id(a)
10771648
>>> a=6
>>> id(a)
10771680
>>> a=5
>>> id(a)
10771648
>>> b=a
>>> id(b)
10771648
>>> id(5)
10771648
>>> id(6)
10771680
>>> id(a+1)
10771680

Donc là je ne comprends plus trop. Si vraiment id() donne l'adresse de la variable "a", le résutat ne devrait pas être fonction de son contenu. Et si "b" est une copie de "a", son adresse à elle devrait être différente. Et on ne peut pas demander l'adresse d'un nombre codé en dur. En tout cas, ce sont là des questions qui me turlupinent. Peut-être parce que j'essaye de faire le rapprochement avec le &a du C qui n'aurait pas du tout répondu la même chose avec des tests équivalents...

Alors j'avais bien une hypothèse: je me disais que les valeurs en dur (5, 6) sont stockées dans la zone statique du code et que id() me renvoie l'adresse de cette zone. Cela aurait pu expliquer tous les différents résultats... à l'excepté du dernier (id(a+1)) car là c'est un calcul que je demande. Or l'adresse d'un calcul...???

Donc si quelqu'un avait une explication...

Merci à tous de votre attention.