Issue33705
Created on 2018-05-31 04:53 by steven.daprano, last changed 2022-04-11 14:59 by admin.
| Messages (2) | |||
|---|---|---|---|
| msg318250 - (view) | Author: Steven D'Aprano (steven.daprano) * ![]() |
Date: 2018-05-31 04:53 | |
There is a loophole in the Unicode normalisation which allows the creation of names matching keywords.
class Spam:
locals()['if'] = 1
Spam.π’π # U+1D422 U+1D41F
# returns 1
Those two characters are 'MATHEMATICAL BOLD SMALL I' and 'MATHEMATICAL BOLD SMALL F'. They ought to be normalised to "if", which is a keyword.
Of course Spam.if is a syntax error, and I believe Spam.π’π ought to be as well.
Another example:
py> globals()['for'] = 2
py> πor
2
I also asked about this here:
https://mail.python.org/pipermail/python-dev/2018-May/153619.html
|
|||
| msg318251 - (view) | Author: Steven D'Aprano (steven.daprano) * ![]() |
Date: 2018-05-31 04:54 | |
Possibly the correct term is canonicalisation rather than normalisation, although I think the two are interchangeable. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022-04-11 14:59:01 | admin | set | github: 77886 |
| 2018-05-31 04:54:23 | steven.daprano | set | messages: + msg318251 |
| 2018-05-31 04:53:08 | steven.daprano | create | |
