Cet article présente à quoi fait référence la fonction id() en Python. Elle a une certaine valeur de référence. Maintenant, je la partage avec vous. Les amis dans le besoin peuvent se référer à la fonction
Utilisée pour. obtenir l'adresse mémoire de l'objet. Beaucoup d'amis ne savent pas ce qu'est la fonction id en python ? Ensuite, l'éditeur partagera cet article avec vous pour vous aider à apprendre
L'explication donnée par la documentation officielle de Python est
id(object)
Retournez le « identité » d'un objet. Il s'agit d'un entier (ou entier long) qui est garanti unique et constant pour cet objet pendant sa durée de vie. Deux objets dont les durées de vie ne se chevauchent pas peuvent avoir la même valeur id().
Détail de l'implémentation de CPython : Il s'agit de l'adresse de l'objet en mémoire.
On peut le voir à partir de ceci :
1. number" de l'objet, unique et inchangé, mais la même valeur d'identifiant peut apparaître dans des cycles de vie qui ne se chevauchent pas. Les objets mentionnés ici doivent spécifiquement faire référence à des objets de type composite (tels que des classes, des listes, etc.). Pour les types tels que des chaînes et des entiers, l'identifiant de la variable change à mesure que la valeur change.
2. La valeur id d'un objet représente son adresse en mémoire dans l'interpréteur CPython. (Interpréteur CPython : http://zh.wikipedia.org/wiki/CPython) Lorsqu'il détermine si deux objets sont égaux, la base est la valeur de l'identifiant
class Obj(): def __init__(self,arg): self.x=arg if __name__ == '__main__': obj=Obj(1) print id(obj) #32754432 obj.x=2 print id(obj) #32754432 s="abc" print id(s) #140190448953184 s="bcd" print id(s) #32809848 x=1 print id(x) #15760488 x=2 print id(x) #15760464
La différence entre is et == est qu'il s'agit d'une comparaison en mémoire, et == est une comparaison de valeurs
Recommandations associées :
class Obj(): def __init__(self,arg): self.x=arg def __eq__(self,other): return self.x==other.x if __name__ == '__main__': obj1=Obj(1) obj2=Obj(1) print obj1 is obj2 #False print obj1 == obj2 #True lst1=[1] lst2=[1] print lst1 is lst2 #False print lst1 == lst2 #True s1='abc' s2='abc' print s1 is s2 #True print s1 == s2 #True a=2 b=1+1 print a is b #True a = 19998989890 b = 19998989889 +1 print a is b #False
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!