2011-08-11 24 views
5

Đây là một đoạn từ Dive Into Python 3 chuỗi liên quan:Đối tượng byte của Python có được gọi là chuỗi không?

Trong Python 3, tất cả các chuỗi là chuỗi ký tự Unicode. Không có điều gì như một chuỗi Python được mã hóa trong utf-8, hoặc một chuỗi Python được mã hóa là CP-1252. “Chuỗi này là utf-8?” Là một câu hỏi không hợp lệ. utf-8 là một cách mã hóa các ký tự dưới dạng một chuỗi các byte. Nếu bạn muốn lấy một chuỗi và biến nó thành một chuỗi các byte trong một mã hóa ký tự cụ thể, Python 3 có thể giúp bạn với điều đó. Nếu bạn muốn lấy một chuỗi các byte và biến nó thành một chuỗi, Python 3 cũng có thể giúp bạn với điều đó. Byte không phải là ký tự; byte là byte. Nhân vật là một trừu tượng. Một chuỗi là một chuỗi các trừu tượng đó.

Sáng nay tôi đã sử dụng các mô-đun hashlib và đọc các văn bản trợ giúp cho md5 nói rằng:

Return một đối tượng MD5 băm mới; tùy chọn khởi tạo bằng một chuỗi.

Vâng, nó không chấp nhận string - nó chấp nhận đối tượng bytes.

Có lẽ tôi đang đọc quá nhiều vào điều này, nhưng sẽ không có ý nghĩa hơn nếu văn bản trợ giúp đã nêu một số bytes nên được sử dụng thay thế? Hoặc là những người sử dụng cùng một tên cho chuỗi và byte?

+0

Phiên bản tài liệu Python nào bạn đang xem? 2.7 không tạo ra sự khác biệt cần thiết 3k (rõ ràng là hehe), nhưng các tài liệu 3k tôi có. (BTW, một fan hâm mộ của LOK? :)) – Skurmedel

+0

Không thể nhớ phiên bản chính xác bây giờ, có thể stackless thậm chí ... 3 cái gì đó. LOK rock;) – roqvist

Trả lời

6

Trong Python 2 và 3, str được sử dụng cho cả chuỗi ký tự cũng như byte. Trong thực tế, cho đến Python 2.6, thậm chí không có loại bytes (và trong 2.6 và 2.7, bytes is str).

Các mâu thuẫn được đề cập trong tài liệu hashlib là một tạo phẩm của lịch sử này.

+0

Tôi hiểu, điều này có ý nghĩa. Cảm ơn – roqvist

5

Có lẽ sự trợ giúp được bỏ qua từ Python2.

Đây là một trong những thay đổi lớn hơn từ 2 đến 3

 
    Python2   Python3 

    str    bytes 
    unicode   str 

python2.6 + bắt đầu để chuẩn bị cho sự thay đổi bằng cách làm cho bytes một từ đồng nghĩa của str

Bạn nên báo cho các nhà phát triển (Trừ khi nó đã được sửa - tôi chỉ có 3.1.2 ở đây). Tôi nghĩ rằng từ ngữ có lẽ nên được cải thiện

+0

Cảm ơn, tôi sẽ xem xét báo cáo – roqvist

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