[Python-Dev] Normalisation of unicode and keywords

Steven D'Aprano steve at pearwood.info
Fri May 18 07:46:11 EDT 2018

Stephan Houben noticed that Python apparently allows identifiers to be 
keywords, if you use Unicode "mathematical bold" letters. His 
explanation is that the identifier is normalised, but not until after 
keywords are checked for. So this works:

class Spam:
    locals()['if'] = 1

Spam.𝐢𝐟    # U+1D422 U+1D41F
# returns 1

Of course Spam.if fails with SyntaxError.

Should this work? Is this a bug, a feature, or an accident of 
implementation we can ignore?


More information about the Python-Dev mailing list