我一直试图弄清楚如何使用非ascii unicode字符作为Python 3变量,但我不确定哪些工作,哪些不工作。为什么σ
有效但∆
没有?可以使用∆
作为角色,还是现在不可能?
# Version
sys.version
'3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 12:04:33) \n[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)]'
σ = 10
print(σ )
# 10
∆ = 20
# File "<ipython-input-24-b5e030117292>", line 1
# ∆ = 20
# ^
# SyntaxError: invalid character in identifier
答案 0 :(得分:5)
这在Python参考中的Identifiers下有记录。
但简短版本是您只能在标识符中使用字母和数字以及一些特殊连接符,∆
(U+2206
,INCREMENT
)不是字母,它是一个字母数学运算符(Symbol, Math
类别的一部分)。
如果您打算使用Δ
(U+0396
,GREEK CAPITAL LETTER DELTA
)......那么,这是一个可以理解的错误,因为它们不仅在大多数字体中看起来非常接近或相同,而且是即使在黑板书写中也常常没有区别(“增量”符号的整个点是它是一个三角形)。但它们不是同一个字符,只有那个用作字母的字符才能成为变量名称的一部分。
此外,文档提到但没有链接到Python标准所基于的Unicode标准,所以这里是链接:UAX-31: Unicode Identifier and Pattern Syntax(又名TR-31)。