On Fri, Apr 20, 2018 at 2:04 PM, Chris Angelico <rosuav@gmail.com> wrote:
On Sat, Apr 21, 2018 at 6:59 AM, Guido van Rossum <guido@python.org> wrote:
> Does the PEP currently propose to *allow* that horrible example? I thought
> Tim Peters successfully pleaded to *only* allow a single "NAME := <expr>".
> You don't have to implement this restriction -- we know it's possible to
> implement, and if specifying this alone were to pull enough people from -1
> to +0 there's a lot of hope!

I don't see much value in restricting the assignment target to names
only, but if that's what it takes, it can be restricted, at least
initially.

All of this is an exercise in listening and compromise, not in solving puzzles.
 
As to chaining... well, since the entire construct (target
:= expr) is an expression, it can be used on the right of :=, so short
of outright forbidding it, there's not a lot to be done.

It would be more work but it can definitely be done (perhaps by introducing a syntactic construct of intermediate precedence). People could write "a := (b := foo())" but that way they resolve the ambiguity. Although if we restrict targets to just names there's less concern about ambiguity.

--
--Guido van Rossum (python.org/~guido)