Recherche de site Web

Python id()


La fonction id() de Python retourne l'"identité" de l'objet. L'identité d'un objet est un entier, qui est garanti d'être unique et constant pour cet objet durant sa durée de vie. Deux objets avec des durées de vie distinctes peuvent avoir la même valeur id(). Dans l'implémentation CPython, cela correspond à l'adresse de l'objet en mémoire.

Python id()

Python met en cache la valeur id() des types de données couramment utilisés, tels que les chaînes, les entiers, les tuples, etc. Ainsi, vous pourriez constater que plusieurs variables font référence au même objet et ont la même valeur id() si leurs valeurs sont identiques. Vérifions cela avec un exemple.

integers
a = 10
b = 10
c = 11
d = 12

print(id(a))
print(id(b))
print(id(c))
print(id(d))

Sortie :

4317900064
4317900064
4317900096
4317900128

Remarquez que la valeur id() de 'a' et 'b' est la même, elles ont la même valeur entière. Voyons si nous obtenons un comportement similaire avec les chaînes de caractères et les tuples aussi ?

tuples
t = ('A', 'B')
print(id(t))

t1 = ('A', 'B')
print(id(t1))

strings
s1 = 'ABC'
s2 = 'ABC'
print(id(s1))
print(id(s2))

Sortie :

4320130056
4320130056
4320080816
4320080816

D'après la sortie, il est clair que Python met en cache les chaînes et les objets tuple et les utilise pour économiser de l'espace mémoire.

Le caching ne peut fonctionner qu'avec des objets immuables, à noter que les entiers, les chaînes et les tuples sont immuables. Ainsi, l'implémentation de Python peut utiliser le caching pour économiser de l'espace mémoire et améliorer les performances.

Nous savons que le dictionnaire n'est pas immuable, voyons si id() est différent pour différents dictionnaires même si les éléments sont les mêmes ?

dict
d1 = {"A": 1, "B": 2}
d2 = {"A": 1, "B": 2}
print(id(d1))
print(id(d2))

Sortie :

4519884624
4519884768

Comme nous l'avons pensé, les objets dict renvoient une valeur id() différente et il ne semble pas y avoir de mise en cache ici.

Python id() pour un objet personnalisé

Voyons un exemple simple d'obtention de la valeur id() pour un objet personnalisé.

class Emp:
    a = 0


e1 = Emp()
e2 = Emp()

print(id(e1))
print(id(e2))

Sortie :

4520251744
4520251856

Résumé

La valeur de l'identifiant id() en Python est garantie d'être unique et constante pour un objet. Nous pouvons l'utiliser pour vérifier si deux objets font référence au même objet en mémoire ou non.

Vous pouvez consulter le script Python complet et d'autres exemples de Python sur notre dépôt GitHub.

Référence : Documentation officielle