On Fri, Jun 24, 2011 at 05:02:00PM -0400, Terry Reedy wrote: > On 6/24/2011 4:06 PM, Tycho Andersen wrote: > > >tmp = {} > >x['huh'] = tmp # NameEror! > > > >That is, the right hand sides of assignments are evaluated before the > >left hand sides. That is (somehow?) not the case here. > > You are parsing "a = b = c" as "a = (b = c)" which works in a > language in which assignment is an expression, but does not work in > Python where assignment is a statement. You have to parse it more as > "(a = b) = c" but that does not work since then the first '=' is not > what it seems. It is more like "(both a and b) = c". Perhaps best to > expand "a = b = c" to "a = c; b = c" and see the first as an > abbreviation thereof -- just delete the 'c;'. > > If I have ever used this sort of multiple assignment, it has been > for simple unambiguous things like "a = b = 0".
Ah, the point about the grammar is what I was missing. Thanks a bunch! \t -- http://mail.python.org/mailman/listinfo/python-list