python中的str和bytes有什么关系?

What's the relationship between str and bytes in python?

考虑以下打字稿:

>>> s = 'a'
>>> isinstance(s, bytes)
True
>>> isinstance(s, str)
True
>>> isinstance(s, unicode)
False
>>> isinstance(s.decode('utf-8'), unicode)
True

为什么 s 既是 str 又是 bytes?其中一个是另一个的后代吗?

我是怎么运行进去的?我试图在文档中找到 decode 方法的描述。我找不到 str,但可以找到 bytes

您查看的文档有误。

这种等效性仅在 Python 2.7 中成立。在那里,bytes 作为 str 的别名引入,以便于迁移到 Python 3.

在Python3中,str就是之前叫的unicodebytes就是之前叫str的类型。

str.decode for Python 2 的文档是 here