Le samedi 21 avril 2012 10:46:39 UTC+2, Alexander Blinne a écrit : > Am 21.04.2012 05:25, schrieb Rotwang: > > This happens only because the first [] gets destroyed after evaluation > of id([]). The second [] then by accident gets the same id as the first > one had. > > >>> a = [] > >>> b = [] > >>> id(a) == id(b) > False > > Greetings
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 ?? regards, gs. -- http://mail.python.org/mailman/listinfo/python-list