Waffling (was Re: single-line terinary operators considered harmful)
Steven Taschuk
staschuk at telusplanet.net
Thu Mar 6 22:04:57 EST 2003
Quoth Stephen Horne:
> On Thu, 6 Mar 2003 13:03:50 -0700, Steven Taschuk
> <staschuk at telusplanet.net> wrote:
>
> >Certainly Python's guaranteed evaluation and execution order is
> >very comfortable. There is the occasional oddity:
> > d = {}
> > i = 3
> > i = d[i] = i+1
> >has a surprising (to me) result. But this isn't good style anyway.
>
> I wondered what you were talking about - until I noticed that...
[...]
> I'm not sure I understand it, but I imagine it has to do with '='
> being n-ary (n >= 2) non-associative (rather than binary
> right-associative). Maybe the assigns are done left-to-right, even
> though the rightmost item is the source and must be evaluated first?
Exactly.
Now that I look, I see that the language reference (6.3) has a
nice example of a related gotcha:
x = [0, 1]
i = 0
i, x[i] = 1, 2
print x
Heh. All good material for an obfuscated Python contest.
--
Steven Taschuk staschuk at telusplanet.net
"Its force is immeasurable. Even Computer cannot determine it."
-- _Space: 1999_ episode "Black Sun"
More information about the Python-list
mailing list