2013-04-24 36 views
6

Tôi đã gặp phải sự cố lạ vào hôm nay. Tôi đã sử dụng biến số letters của thư viện chuẩn của Python và nhận thấy rằng kết quả trong bpython không giống với kết quả trong con trăn vani.Tại sao string.letters khác nhau giữa python và bpython?

Tôi đang sử dụng Python 2.7.3 và bpython 0.10.1 và virtualenv 1.8.4. Đây là những gì tôi thấy.

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


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

Tôi không chắc là nó quan trọng nhưng tôi đang chạy trên xubuntu 12.10.

Ai đó có thể giải thích điều gì đang xảy ra ở đây không?

+0

phỏng đoán của tôi là chúng chỉ là các triển khai khác nhau, trong đó có một chuỗi 'string.letters = string.ascii_upper + string.ascii_lower' và chuỗi kia đã làm' string.letters = string.ascii_lower + string.ascii_upper', tôi không nghĩ nó sẽ có bất kỳ tác dụng nào đối với bất kỳ chương trình nào của bạn (trừ khi bạn đang cố gắng làm 'string.letters [: 26]' hoặc cái gì đó) –

+0

Thật lạ lùng: bằng cách sử dụng 'string.letters' tôi nhận được kết quả tương tự như bạn, nhưng sử dụng' string. ascii_letters' Tôi nhận được ''abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'' trong cả python và bpython. – dusan

Trả lời

4

Từ docs, string.letters được định nghĩa là

Nối các dây chữ thường và chữ hoa mô tả dưới đây. Giá trị cụ thể là phụ thuộc vào miền địa phương và sẽ được cập nhật khi locale.setlocale() được gọi.

Vì vậy, có thể là ngôn ngữ của bạn là khác nhau.

+4

Tôi đoán điều đó có thể đúng: 'bpython' hiển thị một' locale' của '('en_US', 'UTF-8')' và 'python' hiển thị' locale' của '(None, None)' –

+0

Nó quay rằng miền địa phương dường như không ảnh hưởng đến nó. Tôi đã thay đổi miền địa phương trong 'python' thay thế thành' ('en_US', 'UTF-8') 'và' string.letters' là giống nhau. –

Các vấn đề liên quan