在Python 3 中將字串轉換為位元組的最佳方法:解釋
Python 3 在嘗試執行以下操作時會引發TypeError由於字串不支援緩衝區接口,因此直接將字串轉換為位元組。此錯誤訊息提示了一個問題:下列哪一種方法比較Pythonic?
b = bytes(mystring, 'utf-8') b = mystring.encode('utf-8')
位元組建構子的探索
檢查位元組文件表明它指向 bytearray,它提供了用於初始化位元組數組的各種選項。在這些選項中,有一個很突出:
bytearray(source[, encoding[, errors]])
這裡,如果source 是一個字串,則encoding 和errors參數必須是提供,其中bytearray()使用以下方法將字串轉換為位元組str.encode().
Pythonic 注意事項
雖然bytes 提供了字串編碼之外更廣泛的功能,但對於編碼字串的特定任務,呼叫some_string.encode(encoding)被認為更Pythonic。這主要是由於其清晰性和目的性,因為它明確說明了“獲取此字串並使用此編碼對其進行編碼”的意圖。
相反,bytes(some_string,encoding)缺少明確的動詞,使得預期的操作不太明顯。
效能與實作
對Python原始碼的分析證實unicode_string.encode(encoding)內部呼叫了PEUnicode_Asd ,這與bytes使用的實作相同() 建構子。因此,兩種字串編碼方法在效能或效率上沒有差異。
對稱性與可讀性
此外,unicode_string.encode(encoding)與其逆對稱配對,byte_string.decode(encoding),提供一致且直觀的方法來在字串和位元組表示之間進行轉換。
因此,可以得出結論mystring.encode('utf-8') 是更 Pythonic 且首選的方法在 Python 3 中將字串轉換為位元組。
以上是在 Python 3 中將字串轉換為位元組的更 Pythonic 方法是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!