python 2.7的非ASCII标识符

时间:2013-10-10 22:30:09

标签: python

我知道在python 3.x中我可以使用非ASCII标识符(PEP 3131)。

x1 = 2
x2 = 4
Δx = x2 - x1
print(Δx)

python 2.7中有这样的功能吗?也许,有人将它移植到2.x分支吗?

2 个答案:

答案 0 :(得分:7)

不,Python 2中没有这样的功能;名称仅限于使用ASCII字母和数字。

请参阅参考手册的Identifiers and Keywords部分:

  

标识符(也称为名称)由以下描述   词汇定义:

identifier ::=  (letter|"_") (letter | digit | "_")*
letter     ::=  lowercase | uppercase
lowercase  ::=  "a"..."z"
uppercase  ::=  "A"..."Z"
digit      ::=  "0"..."9"

PEP 3131扩展了Python 3的可能字符范围。

将此移植到2.x分支没有什么意义;它仍然是一个利基“功能”,需要每个运行代码的人都安装一个经过特殊修补和编译的解释器。

请注意,这种变化并非微不足道; Python 2标识符是字节字符串,不是 unicode值。您必须在解释器中找到处理标识符的所有位置,并验证这些位置可以处理非ASCII值,或者为unicode字符串重新调整这些值。这远远超出了编译器!

答案 1 :(得分:0)

嗯,我的意思是,技术上这就是你要求的:

>>> x1 = 2
>>> x2 = 4
>>> locals()[u'Δx'] = x2 - x1
>>> print locals()[u'Δx']
2