2013-04-24 73 views
6

今天我遇到了一個奇怪的問題。我使用Python標準庫的string模塊的letters變量,並注意到bpython中的結果與香草python中的結果不同。爲什麼python和bpython之間的string.letters不同?

我使用Python 2.7.3和bpython 0.10.1和virtualenv 1.8.4。這是我所看到的。

$ bpython 
>>> import string 
>>> string.letters 
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' 


$ python 
>>> import string 
>>> string.letters 
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' 

我不知道它的問題,但我在xubuntu 12.10上運行這個。

有人能解釋一下這裏發生了什麼嗎?

+0

我的猜測是他們只是不同的實現,其中一個說'string.letters = string.ascii_upper + string.ascii_lower',另一個'string.letters = string.ascii_lower + string.ascii_upper',我不認爲它會對你的程序有任何影響(除非你正在嘗試執行'string.letters [:26]'或其他什麼) – 2013-04-24 15:48:10

+0

這很奇怪:使用'string.letters'我得到和你一樣的結果,但是使用'string。 ascii_letters'我在python和bpython中都得到'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ''。 – dusan 2013-04-24 17:16:32

回答

4

docs,string.letters被定義爲

的字符串的串聯小寫和大寫下面描述 。具體值取決於語言環境,當locale.setlocale()被調用時將會更新 。

所以它可能是你的區域設置不同。

+4

我想這可能是正確的:'bpython'顯示'('en_US','UTF-8')的'locale'','python'顯示'(locale)'(None,None)' – 2013-04-24 14:58:40

+0

該區域似乎不會影響它。我將'python' repl中的語言環境改爲'('en_US','UTF-8')'和'string.letters'是一樣的。 – 2013-04-24 15:04:11

相關問題