Python 3中如何使用Unicode字符作为变量?为何σ可用而∆不可用?
Python中Unicode变量名的使用规则:为什么σ可用而∆可能不行?
这个问题其实和Python 3对Unicode标识符的定义规则直接相关,咱们一步步拆解来看:
核心规则:Python 3的标识符要求
Python 3遵循PEP 3131标准,允许使用Unicode字符作为变量名,但有严格的限制:
- 变量名必须以Unicode字母、下划线(
_)开头 - 后续字符可以是Unicode字母、数字、下划线,或者其他符合Unicode属性的特殊字符(比如某些连接符、修饰符)
这里的关键是「Unicode字母」——不是所有看起来像字母的符号都属于这个类别,得看字符的Unicode属性。
为什么σ可以正常使用?
σ(希腊小写字母Sigma,Unicode编码U+03C3)属于Unicode的「小写字母」类别(Ll),完全符合变量名开头的要求,所以可以直接作为变量名使用:
σ = 3.14 print(σ) # 输出 3.14
为什么你的∆不能用?问题出在字符本身!
你遇到的「∆」很可能是两种不同的字符之一:
- 希腊大写字母Delta(U+0394):这是标准的Unicode字母(Lu类别,大写字母),是可以作为变量名的:
Δ = 100 print(Δ) # 输出 100 - 增量符号∆(U+2206):这是数学领域的专用符号,属于Unicode的「数学符号」类别(Sm),不符合变量名开头的要求,所以会触发语法错误:
∆ = 5 # 运行时会报 SyntaxError: invalid character in identifier
简单说,你用的如果是数学符号版的∆,自然不能当变量名;如果是希腊字母版的Δ,完全没问题。
快速判断字符是否可用的方法
不确定某个字符能不能当变量名?直接用Python内置的str.isidentifier()方法验证:
print('σ'.isidentifier()) # True,可用 print('Δ'.isidentifier()) # True(希腊字母版),可用 print('∆'.isidentifier()) # False(数学符号版),不可用
结论
目前Python 3中,希腊大写字母Delta(U+0394)是可以作为变量名的,但数学符号类的∆(U+2206)不行。如果你想用类似的符号当变量,先确认它的Unicode属性是否属于字母类别,或者直接用isidentifier()快速验证。
内容的提问来源于stack exchange,提问作者O.rka
相关产品推荐
相关产品推荐

