在 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)内部调用了PyUnicode_AsEncodedString,这与bytes使用的实现相同() 构造函数。因此,两种字符串编码方法在性能或效率上没有差异。
对称性和可读性
此外,unicode_string.encode(encoding) 与其逆对称配对,byte_string.decode(encoding),提供一致且直观的方法来在字符串和字节表示之间进行转换。
因此,可以得出结论 mystring.encode('utf-8') 是更 Pythonic 且首选的方法在 Python 3 中将字符串转换为字节。
以上是在 Python 3 中将字符串转换为字节的更 Pythonic 方法是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!