On 2019-02-19, Chris Angelico <ros...@gmail.com> wrote: > On Wed, Feb 20, 2019 at 3:23 AM Grant Edwards <grant.b.edwa...@gmail.com> > wrote: > >> Those object _may_ each have different identies. Is it required that >> they do? If an assignment is done on name referring to an object with >> no other references, would it be allowed that the "old" object is >> destroyed and its ID reused for a new object being created by the RHS >> of the assignment? >> >> Admittedly, that would be a rather odd way to do things. One would >> expect that first the RHS is evaluated (perhaps creating a new >> object), then the name is rebound. > > Correct, the RHS is evaluated first. So the old object is still > around (important for statements like "x = x.lower()").
Not doing the unbinding until after the RHS evaluation is also important for preventing surprises due to exceptions raised while the RHS is evaluated. One would reasonably expect that if that happens the original binding of the name on the LHS is unchanged. Dunno if that's actually specified anywhere... -- Grant Edwards grant.b.edwards Yow! Someone in DAYTON, at Ohio is selling USED gmail.com CARPETS to a SERBO-CROATIAN -- https://mail.python.org/mailman/listinfo/python-list