On 5/15/2018 8:41 PM, Steven D'Aprano wrote:
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:

Not quite as heavy.

     \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:

I think it is just ugly enough to discourage wild use.

     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

I believe avoiding tagging raw names as keywords could be done by adjusting the re for keywords and that addition of '\' could be done by re.sub. (The details should be in the doc.)


--
Terry Jan Reedy

_______________________________________________
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