unicode as valid naming symbols

Steven D'Aprano steve+comp.lang.python at pearwood.info
Wed Mar 26 00:58:17 CET 2014

On Tue, 25 Mar 2014 14:29:06 -0500, Mark H Harris wrote:

> On 3/25/14 2:24 PM, MRAB wrote:
>  > It's explained in PEP 3131.
>  >
>  > Basically, a name should to start with a letter (this has been
>  > extended to include Chinese characters, etc) or an underscore.
>  >
>  > λ is a classified as Lowercase_Letter.
>  >
>  > √ is classified as Math_Symbol.
>     Thanks much!  I'll note that for improvements. Any unicode symbol
> (that is not a number) should be allowed as an identifier.

To quote a great Spaniard:

    “You keep using that word, I do not think it means what you
     think it means.”

Do you think that the ability to write this would be an improvement?

import ⌺
⌚ = ⌺.╩░
⑥ = 5*⌺.⋨⋩
❹ = ⑥ - 1
♅⚕⚛ = [⌺.✱✳**⌺.❇*❹{⠪|⌚.∣} for ⠪ in ⌺.⣚]

Of course, it's not even necessary to be that exotic. "Any unicode symbol 
that is not a number"... that means things like these:


would count as identifiers, which could lead to a little bit of parsing 
ambiguity... *wink*

There are languages that can allow arbitrary symbols as identifiers, like 
Lisp and Forth. You will note that they have a certain reputation for 
being, um, different, and although both went through periods of 
considerable popularity, both have faded in popularity since. While they 
have their strengths, and their defenders, nobody argues that they are 
readily accessible to the average programmer.

Steven D'Aprano

More information about the Python-list mailing list