我正在尝试使用Unicode标识符,并偶然发现了这个:
>>> , x = 1, 2
>>> , x
(1, 2)
>>> , f = 1, 2
>>> , f
(2, 2)
这里发生了什么?为什么Python有时会替换被引用的对象?这种行为在哪里描述?
所有标识符在解析时都会被转换为正常形式NFKC;标识符的比较基于NFKC。
您可以使用unicodedata
测试转换结果:
import unicodedata
unicodedata.normalize('NFKC', '')
# f
''
被转换为'f'
。因此得到了期望的结果: = "Some String"
print(f)
# "Some String"
π
,而不会与 p
发生混淆。如果我理解正确,NFK* 折叠是关于 Unicode 尝试将某些字符归为同一字符,但由于与一些旧编码的向后兼容性问题无法合并。 - lenzᵢ_fᵣₑ_ₕ_dₑᵢiℓy___ᵘg = 42
print(Tℹ_eᵣe_ₛº_eᵢⁱtᵉ_ℯ__)
# => 42
在线试用!(但请不要使用它)А = 42
print(A)
# => NameError: name 'A' is not defined
А = 42; print(A)
--> "NameError: name 'A' is not defined"。 - Mark
=1
、f=2
和print()
就可以了。 - khelwoodf
或``无关。 - user76284= 3; f
就足够了。 - user76284