首页 > 解决方案 > Python 是否禁止使用两个外观相似的 Unicode 标识符?

问题描述

我在玩 Unicode 标识符时偶然发现了这个:

>>> , x = 1, 2
>>> , x
(1, 2)
>>> , f = 1, 2
>>> , f
(2, 2)

这里发生了什么?为什么 Python 会替换 引用的对象,但只是有时?该行为在哪里描述?

标签: pythonunicode

解决方案


PEP 3131 -- 支持非 ASCII 标识符

所有的标识符在解析的时候都被转换成正常形式的NFKC;标识符的比较基于 NFKC。

您可以unicodedata用来测试转换:

import unicodedata

unicodedata.normalize('NFKC', '')
# f

这将表明在解析中''被转换为。'f'导致预期:

  = "Some String"
print(f)
# "Some String"

推荐阅读