Python在变量名中使用时不区分某些unicode字符 问题

Python在变量名中使用时不区分某些unicode字符 问题,python,python-3.x,unicode,python-unicode,Python,Python 3.x,Unicode,Python Unicode,在编写Python3代码时,我在变量名中使用Unicode文本,这让我感到很高兴。今天我遇到了一个奇怪的bug,这是由于Python没有区分变量ρ和ϱ,正如下面的简短代码所示: ρ = 'hello' ϱ = 'goodbye' print(ρ) # Prints 'goodbye' 这是一个bug还是一个特性?对于后者,我如何/在哪里找到以这种方式属于一起的所有此类字符集 进一步探索 在字符串中使用ρ和ϱ时,不存在这种差异: a = 'ρ' b = 'ϱ' print(a == b) #

在编写Python3代码时,我在变量名中使用Unicode文本,这让我感到很高兴。今天我遇到了一个奇怪的bug,这是由于Python没有区分变量
ρ
ϱ
,正如下面的简短代码所示:

ρ = 'hello'
ϱ = 'goodbye'
print(ρ)  # Prints 'goodbye'
这是一个bug还是一个特性?对于后者,我如何/在哪里找到以这种方式属于一起的所有此类字符集

进一步探索 在字符串中使用
ρ
ϱ
时,不存在这种差异:

a = 'ρ'
b = 'ϱ'
print(a == b)  # Prints False
这使我确信这不是我的编辑器/终端的编码问题

我们还可以使用
unicodedata
模块确认Python完全清楚我们正在处理哪些字符:

import unicodedata
print(unicodedata.name('ρ'))  # Prints 'GREEK SMALL LETTER RHO'
print(unicodedata.name('ϱ'))  # Prints 'GREEK RHO SYMBOL'
我发现这对φ(希腊字母PHI)和φ(希腊字母PHI)之间的行为相同

解析时将所有标识符转换为标准格式NFKC;标识符的比较基于NFKC

>>> unicodedata.normalize('NFKC', 'ρϱ')
'ρρ'