@
Sylv 对的。补充一下: Python3 的 bytes 是 Python2 中 str 的子集。 参考 Text versus binary data 章节
https://docs.python.org/3/howto/pyporting.html@
woniu127 先理解 Text 和 Binary data (楼上说的文字和字节流): Text 是人看的,文本文件里面写的字符串是 Text 。 Binary data 是机器存的。保存文件 Text -encode-> Binary data ;打开 Binary data -decode-> Text 。
Python3 是一一对应:, str 对应 Text , bytes 对应 Binary data 。 str encode 成为 bytes , bytes decode 成为 str 。你附图里的操作很好的说明,“好”和 u “好”都是 str 。
Python2 中 bytes 对应 binary data (等同于 python3 的 bytes ),而 str 是 text 也可以是 binary data 。“好”和 u “好”不同, u “好”( unicode )才是真正的 str 。
a="好"(py2) 等价 a=b'\xe5\xa5\xbd'(py2) 等价 a=b'\xe5\xa5\xbd'(py3)。 type 为 bytes(py3),可被 decode 。
a=u"好"(py2) 等价 a="好"(py3) 等价 a=u"好"(py3)。 type 为 str(py3),可被 encode 。