簡體   English   中英

Python的字節對象也稱為字符串嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM