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