Steven Turnbull wrote:
Christoph Groth writes:
Wouldn't it be a pity not to liberate assignments from their boring
Maybe not. While it would be nice to solve the loop-and-a-half
"problem" and the loop variable initialization "problem" (not everyone
agrees these are even problems, especially now that we have
comprehensions and generator expressions), as a matter of taste I like
the fact that this particular class of side effects is given weighty
statement syntax rather than more lightweight expression syntax.
I think that this is the crucial point. If it is indeed a design
principle of Python that expressions should not have the side-effect of
assigning names, than the whole discussion of PEP 572 could have been
stopped early on. I didn't have this impression since core devs
participated constructively in the discussion.
That is, I find statement syntax more readable.
Many people will agree that := is more readable when used in cases where
it's meant to be used (as listed in the PEP). Your objection seems to
refer to the potential for "clever" misuse, like
i := (a := list(iterator)).index(elem)
a := list(iterator)
i := a.index(elem)
I think that the ":=" syntax catches the eye and makes it easy to spot
even hidden assignment expressions that shouldn't have been used.
Note that the proposed syntax can be actually *more* readable even when
used as a statement, like in
equal := a == b
Personally, I even slightly prefer
a := 3
to the commonplace
a = 3
because it visually expresses the asymmetry of the operation. (And no,
Turbo Pascal was not my first programming language. :-)
Python-Dev mailing list