On 19 May 2018 at 04:34, Chris Angelico <ros...@gmail.com> wrote:

> "yield" would have to be a keyword in any context where an expression
> is valid. Which, in turn, makes it utterly useless as a function name,
> or any other identifier.
>

Right, I spent a fair bit of time thinking about this in the context of
using "given" to introduce postfix assignment expressions, and while it's
reasonably straightforward to make it so that keywords that can't start an
expression or statement (currently "as", "in", "is", "and", "or") can also
be used as names, we don't have that kind of freedom for keywords that can
*start* an expression or statement ("async"/"await" relied on some parser
tricks that relied on the fact that "async" always needed to be paired with
"def" to introduce a coroutine, and "await EXPR" was only permitted inside
coroutine definitions).

We also run into the problem that even when the compiler can tell the
difference, *humans* are still likely to be confused by the potential
ambiguity (for the same reason that shadowing builtins is generally
considered poor style).

Cheers,
Nick.

-- 
Nick Coghlan   |   ncogh...@gmail.com   |   Brisbane, Australia
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to