2013-10-10 67 views
3

我知道在python 3.x中,我可以使用非ASCII標識符(PEP 3131)。Python的非ASCII標識符2.7

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

python 2.7中是否有這樣的功能?也許,有人將它移植到2.x分支?

+1

爲什麼你甚至想這樣做呢?只需使用'dx'。 – arshajii

+0

我沒有你的答案,但請不要這樣做...只是叫它delta_x –

+0

@dx:這只是一個例子。在實際的形式表達式將是這樣的:Δδj=κ*Áj*Δȳ對我來說它會更清晰.. –

回答

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

另外,除非Python開發社區的思維模式發生巨大變化,否則不會有任何新功能被移植到Python 2.x中,所以即使這些都不是真的,它發生的機會將是零。 – abarnert

0

嗯,我的意思是,技術上這是你問什麼:

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