Maison >développement back-end >tutoriel php >À quoi fait référence la fonction id() en Python ?

À quoi fait référence la fonction id() en Python ?

不言
不言original
2018-04-16 16:58:586126parcourir

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
Implémentation du code de rayonnement Python


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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn