【问题标题】:Python does not distinguish between some unicode characters when used in variable names [duplicate]Python在变量名中使用时不区分某些unicode字符[重复]
【发布时间】:2017-06-02 00:05:43
【问题描述】:

问题

我很高兴自己在编写 Python 3 代码时在变量名中使用 Unicode 文字。今天我遇到了一个奇怪的错误,原来是由于 Python 没有区分变量 ρϱ,如下短代码所示:

ρ = 'hello'
ϱ = 'goodbye'
print(ρ)  # Prints 'goodbye'

这是错误还是功能?在后者的情况下,我如何/在哪里可以找到以这种方式属于一起的所有此类字符的集合?

进一步探索

当在字符串中使用ρϱ 时,不会出现这种差异:

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 符号)之间的行为相同。

【问题讨论】:

    标签: python python-3.x unicode python-unicode


    【解决方案1】:

    2.3. Identifiers and keywords ¶

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

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

    【讨论】:

      猜你喜欢
      • 2019-04-20
      • 1970-01-01
      • 2020-11-01
      • 2019-04-16
      • 1970-01-01
      • 1970-01-01
      • 2012-01-26
      • 2023-04-06
      • 2023-03-16
      相关资源
      最近更新 更多