[Python-ideas] Make keywords KEYwords only in places they would have syntactical meaning

Ken Hilton kenlhilton at gmail.com
Fri May 18 07:22:13 EDT 2018

Hi all,

Yes, this is another idea for avoiding breaking existing code when
introducing new keywords. I'm not sure if this is too similar to Guido's
previous "allow keywords in certain places" idea, but here goes:

Only treat keywords as having any special meaning when they are in places
with syntactical significance.
So, currently, let's say someone set the variable "and_" to some value. The
following lines are both SyntaxErrors:

    True and_ False
    obj.and = value

And the following are both correct:

    True and False
    obj.and_ = value

My idea is to only treat keywords as having special meaning when they're in
the right place. So the following would all be legal:

    >>> from operator import and
    >>> var = and(True, False)
    >>> var
    >>> var = True and False
    >>> var
    >>> def except(exc, def):
    ...     try:
    ...         return def()
    ...     except exc as e:
    ...         return e
    >>> except(ZeroDivisionError, lambda: 1/0)
    ZeroDivisionError('division by zero',)
    >>> except(ZeroDivisionError, lambda: 0/1)
    >>> import asyncio as await #this is already currently legal, but will
not be in the __future__
    >>> async def async(def):
    ...     return await await.get_event_loop().run_in_executor(None, def)

And so on.

What are your thoughts?


​Ken Hilton
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20180518/a77cf974/attachment-0001.html>

More information about the Python-ideas mailing list