![](https://secure.gravatar.com/avatar/ae477ee7167a8775fe92ab921ffd7a42.jpg?s=120&d=mm&r=g)
On Thursday, July 21, 2016 at 10:24:42 AM UTC+5:30, Pavol Lisy wrote:
On 7/20/16, Danilo J. S. Bellini <danilo....@gmail.com <javascript:>> wrote:
4. Unicode have more than one codepoint for some symbols that look alike, for example "Σ𝚺𝛴𝜮𝝨𝞢" are all valid uppercase sigmas. There's also "∑", but this one is invalid in Python 3. The italic/bold/serif distinction seems enough for a distinction, and when editing a code with an Unicode char like that, most people would probably copy and paste the symbol instead of typing it, leading to a consistent use of the same symbol.
I am not sure what do you like to say, so for sure some info:
PEP-3131 (https://www.python.org/dev/peps/pep-3131/): "All identifiers are converted into the normal form NFKC while parsing; comparison of identifiers is based on NFKC."
From this point of view all sigmas are same:
set(unicodedata.normalize('NFKC', i) for i in "Σ𝚺𝛴𝜮𝝨𝞢") == {'Σ'} <http://python.org/psf/codeofconduct/>
Nice!
Σ = 1 𝚺 = Σ + 1 𝛴 2
But not enough
А = 1 A = A + 1 Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'A' is not defined
Moral: The coarser the equivalence-relation the better (within reasonable limits!) NFKC-equality i coarser than literal-codepoint equality. ∴ Better But not coarse enough. After all identifiers are meant to identify!