2013-04-24 3 views
6

오늘 이상한 문제가 발생했습니다. 나는 파이썬 표준 라이브러리의 string 모듈의 letters 변수를 사용하고 있었고 bpython의 결과가 바닐라 파이썬의 결과와 같지 않음을 알았습니다.python과 bpython에서 string.letters가 다른 이유는 무엇입니까?

저는 파이썬 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에서 실행하고 있습니다.

누군가 여기서 일어날 일을 설명해 줄 수 있습니까? docs 가입일

+0

내 생각에 그들은 하나의'string.letters = string.ascii_upper + string.ascii_lower'와 다른 하나는'string.letters = string.ascii_lower + string.ascii_upper'와는 다른 구현물 일뿐입니다. 'string.letters [: 26]'또는 무엇인가를하려고하지 않는 한, 어떤 프로그램에도 영향을 미친다. –

+0

그것은 이상하다.'string.letters'를 사용하면'string '을 사용하는 것과 같은 결과를 얻는다. ascii_letters' 나는 파이썬과 bpython에서''abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ''를 얻습니다. – dusan

답변

4

는 string.letters는 문자열 연결 소문자

정의 대문자 아래 을 설명한다. 특정 값은 로케일에 따라 다르며 locale.setlocale()이 호출 될 때 으로 업데이트됩니다.

로케일이 다를 수 있습니다.

+4

'bpython'은'('en_US ','UTF-8 ')의'locale'을 보여주고'python'은'(None, None)'의'locale'을 나타냅니다. –

+0

로케일이 영향을 미치지 않는 것 같습니다. 나는'python' repl의 로케일을'('en_US', 'UTF-8')'로 변경했으며'string.letters'도 동일했습니다. –

관련 문제