[Python-ideas] π = math.pi

Steven D'Aprano steve at pearwood.info
Sat Jun 3 12:36:50 EDT 2017


On Sat, Jun 03, 2017 at 03:51:50PM +0300, Serhiy Storchaka wrote:

> The rule for Python identifiers already is not easy, there is no simple 
> regular expression for them, and I'm sure most tools proceeding Python 
> sources (even the tokenize module and IDLE) do not handle all Python 
> identifier correctly. For example they don't recognize the symbol ℘ 
> (U+2118, SCRIPT CAPITAL P) as a valid identifier.

They shouldn't, because it isn't a valid identifier: it's a Maths 
Symbol, not a letter, same as ∑ √ ∫ ∞ etc.

https://en.wikipedia.org/wiki/Weierstrass_p

py> unicodedata.category('℘')
'Sm'

But Python 3.5 does treat it as an identifier!

py> ℘ = 1  # should be a SyntaxError ?
py> ℘
1

There's a bug here, somewhere, I'm just not sure where...

The PEP for non-ASCII identifiers is quite old now (it was written for 
Unicode 4!) but it excludes category 'Sm' in its identifier algorithm:

https://www.python.org/dev/peps/pep-3131/#id16



-- 
Steve


More information about the Python-ideas mailing list