[Python-ideas] Verbatim names (allowing keywords as names)

Guido van Rossum guido at python.org
Tue May 15 21:09:03 EDT 2018


I like it. I much prefer \ to $ since in most languages that use $ that I
know of (Perl, shell) there's a world of difference between $foo and foo
whenever they occur (basically they never mean the same thing), whereas at
least in shell, \foo means the same thing as foo *unless* foo would
otherwise have a special meaning.

I also recall that in some Fortran dialect I once used, $ was treated as
the 27th letter of the alphabet, but not in the language standard. See e.g.
https://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/Dollar-Signs.html. Apparently
it has a similar role in Java (
https://stackoverflow.com/questions/7484210/what-is-the-meaning-of-in-a-variable-name
).

On Tue, May 15, 2018 at 8:41 PM, Steven D'Aprano <steve at pearwood.info>
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:
>
>     \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
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
>



-- 
--Guido van Rossum (python.org/~guido)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20180515/b31d381d/attachment.html>


More information about the Python-ideas mailing list