def id(an_instance) -> int
>>> id("Une chaine de caractères") 140064686507600 >>> hex(id("Une chaine de caractères")) # Affichage en hexadécimal. '0x7f6359e28650' >>>
L'identifiant d'un objet Python reste le même (il est constant) durant toute la vie de l'objet. Mais durant deux exécutions distinctes, ce que vous considérerez comme un même objet (une même donnée) aura des valeurs d'identifiants différentes, l'objet n'étant pas toujours instancié au même emplacement mémoire d'une exécution à l'autre.
Return the identity of an object. This is guaranteed to be unique among simultaneously existing objects. (CPython uses the object's memory address.)
Paramètre | Description |
---|---|
an_instance : object |
L'objet Python pour lequel calculer l'identifiant unique. |
La valeur de retour est de type int.
Cette valeur de retour contient l'identifiant unique de l'object.
L'exemple suivant permet de prouver que, sauf avis contraire de votre part, un objet Python est passé d'une variable à une autre par référence. Si vous souhaitez dupliquer un objet, il faut explicitement de demander.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
msg_reference = "Deux variables qui référencent le même objet" msg_copy = "Deux variables référençant chacune un objet distinct" print("--- 1er test ---") original = [10, 20, 30, 40, 50] copy_or_not = original copy_or_not[2] = 3000 print(original) print(copy_or_not) id1 = id(original) id2 = id(copy_or_not) print(hex(id1), "-", hex(id2), "-", msg_reference if id1 == id2 else msg_copy) print("--- 2nd test ---") original = [10, 20, 30, 40, 50] copy_or_not = list(original) # Notez qu'on passe par le constructeur de la classe list copy_or_not[2] = 3000 print(original) print(copy_or_not) id1 = id(original) id2 = id(copy_or_not) print(hex(id1), "-", hex(id2), "-", msg_reference if id1 == id2 else msg_copy) |
Et voici les résultats produits par cet exemple.
$> python sample.py --- 1er test --- [10, 20, 3000, 40, 50] [10, 20, 3000, 40, 50] 0x7f6dc247f400 - 0x7f6dc247f400 - Deux variables qui référencent le même objet --- 2nd test --- [10, 20, 30, 40, 50] [10, 20, 3000, 40, 50] 0x7f6dc23bc100 - 0x7f6dc23bf580 - Deux variables référençant chacune un objet distinct $>
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :