Am 21.04.2012 14:51, schrieb gst:
> Hi,
> 
> I played (python3.2) a bit on that and :
> 
> case 1) Ok to me (right hand side is a tuple, whose elements are evaluated 
> one per one and have same effect as your explanation (first [] is destroyed 
> right before the second one is created) :
> 
>>>> x, y = id([]), id([])
>>>> x == y
> True
>>>>
> 
> 
> case 2) also ok to me:
> 
>>>> x = id([]) ; y = id([])
>>>> x == y
> True
>>>>
> 
> 
> case 3) NOT ok to me :
> 
>>>> x = id([])
>>>> y = id([])
>>>> x == y
> False
>>>>
> 
> 
> case 4) ok to me :
> 
>>>> def f():
>       x = id([])
>       y = id([])
>       return x == y
> 
>>>> f()
> True
>>>>
> 
> 
> I'd have thought that cases 2&3 are totally, while 3&4 nearly, syntactically 
> equal and that case 3 is the incorrect result..
> 
> how would you explain case 3 vs cases 2 and 4 ??

It is simply not defined if, after creation and destruction of an empty
list with some id, a newly created empty list should carry the same id
or not. In cases 1,2 and 4 it happens, but in case 3 it doesn't. This is
simply an implementation detail and neither behaviour is right or wrong.

Alex
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to