[Python-ideas] PEP 572: Statement-Local Name Bindings, take three!

Steven D'Aprano steve at pearwood.info
Mon Mar 26 18:49:01 EDT 2018


On Mon, Mar 26, 2018 at 03:33:52PM +0100, Rhodri James wrote:

>  While my crystal ball is cloudy, I can well imagine beginners becoming 
> very confused over which symbol to use in which circumstance, and a lot 
> of swearing when:
> 
>   x := f()
>   if (y = g(x)) is not None:
>     h(y)
> 
> results in syntax errors.

I remember as a beginner being terribly confused when writing dicts and 
constantly writing {key=value}. It is part of the learning process, and 
while we shouldn't intentionally make things harder for beginners just 
for the sake of making it harder, we shouldn't necessarily give them 
veto over new features :-)

(I must admit that even now, if I'm tired and distracted I occasionally 
make this same mistake.)

But we also have the opportunity to make things easier for them. I 
presume that the syntax error could diagnose the error and tell them 
how to fix it:

SyntaxError: cannot use := in a stand-alone statement, use =

SyntaxError: cannot use = in an assignment expression, use :=

or similar. Problem solved.


-- 
Steve


More information about the Python-ideas mailing list