[Python-ideas] Verbatim names (allowing keywords as names)
Steven D'Aprano
steve at pearwood.info
Tue May 15 20:41:53 EDT 2018
Inspired by Alex Brault's post:
https://mail.python.org/pipermail/python-ideas/2018-May/050750.html
I'd like to suggest we copy C#'s idea of verbatim identifiers, but using
a backslash rather than @ sign:
\name
would allow "name" to be used as an identifier, even if it clashes with
a keyword.
It would *not* allow the use of characters that aren't valid in
identifiers, e.g. this is out: \na!me # still not legal
See usage #1 here:
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/verbatim
If "verbatim name" is too long, we could call them "raw names", by
analogy with raw strings.
I believe that \ is currently illegal in any Python expression, except
inside strings and at the very end of the line, so this ought to be
syntactically unambgiguous.
We should still include a (mild?) recommendation against using keywords
unless necessary, and a (strong?) preference for the trailing underscore
convention. But I think this doesn't look too bad:
of = 'output.txt'
\if = 'input.txt'
with open(\if, 'r'):
with open(of, 'w'):
of.write(\if.read())
maybe even nicer than if_.
Some examples:
result = \except + 1
result = something.\except
result = \except.\finally
--
Steve
More information about the Python-ideas
mailing list