[英]Are Python's bytes objects also known as strings?
這是Dive Into Python 3關於字符串的部分:
在 Python 3 中,所有字符串都是 Unicode 字符的序列。 不存在編碼為 utf-8 的 Python 字符串或編碼為 CP-1252 的 Python 字符串之類的東西。 “這個字符串是 utf-8 嗎?” 是一個無效的問題。 utf-8 是一種將字符編碼為字節序列的方法。 如果您想獲取一個字符串並將其轉換為特定字符編碼的字節序列,Python 3 可以幫助您。 如果您想獲取一個字節序列並將其轉換為字符串,Python 3 也可以幫助您。 字節不是字符; 字節是字節。 字符是一種抽象。 字符串是這些抽象的序列。
今天早些時候,我使用了hashlib
模塊並閱讀了md5
的幫助文本,上面寫着:
返回一個新的MD5 hash object; 可選地用字符串初始化。
好吧,它不接受string
- 它接受bytes
object。
也許我對此讀得太多了,但是如果幫助文本說明應該使用bytes
,那不是更有意義嗎? 還是人們對字符串和字節使用相同的名稱?
在 Python 2 和 3 中, str
用於字符串和字節。 事實上,在 Python 2.6 之前,甚至沒有bytes
類型(在 2.6 和 2.7 中, bytes is str
)。
hashlib 文檔中提到的不一致是這段歷史的產物。
可能幫助是 Python2 遺留下來的。
這是從 2 到 3 的較大變化之一
Python2 Python3 str bytes unicode str
Python2.6+ 開始為變化做准備,讓bytes
成為str
的同義詞
您應該向開發人員報告(除非它已經修復 - 我這里只有 3.1.2)。 我認為措辭可能應該改進
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.