3

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

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

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

4

2 回答 2

7

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

请参阅参考手册的标识符和关键字部分:

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

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 字符串。这远远超出了编译器!

于 2013-10-10T22:35:32.033 回答
0

好吧,我的意思是,从技术上讲,这就是您所要求的:

>>> x1 = 2
>>> x2 = 4
>>> locals()[u'Δx'] = x2 - x1
>>> print locals()[u'Δx']
2
于 2013-10-10T22:53:24.173 回答