len(var) is [CONSTANT] equal to len(var) == [CONSTANT]?

Duncan Booth duncan.booth at invalid.invalid
Thu Nov 23 06:52:20 EST 2006


Steven D'Aprano wrote:

> No, you will never get two objects existing at the same time with the
> same id. You will get two objects that exist at different times with
> the same id, since ids may be reused when the object is deleted.
> 
I think it is worth pointing out that this is an area where people get 
confused quite often; it is very easily to get misleading results when you 
call the id() function. e.g.

>>> class C:
	def f(self): pass
	def g(self): pass

	
>>> c = C()
>>> id(c.f)==id(c.g)
True
>>> c.f is c.g
False

The ids are the same here only because the objects do not exist at the same 
time. In the first comparison c.f is an expression which creates a 
temporary object that is destroyed before the expression involving c.g is 
evaluated, so it is possible for the different objects to have the same id. 
In the second comparison the objects exist at the same time so they are 
forced to have different ids.



More information about the Python-list mailing list