我正在查看一些单元测试代码,我发现了这个:
self.assertIn(b'Hello', res.body)
我知道这意味着Python 3中的bytes
returns a byte array,我发现here。我相信这段代码是为Python 3.3编写的,我试图弄清楚它在其他版本中是如何工作的(在我的例子中是2.7)我发现的related question有一个写得不好的答案,其中有相互矛盾的评论使我困惑
问题:
b'myString'
“工作”?答案 0 :(得分:6)
这已在您链接的文档中进行了描述。
b'myString'
“工作”?: 2.6 +。 bytes
字面值 - 这与2.x中的str
字面值完全相同。 bytes
字面值 - 不与3.x中的str
字面值相同。 2to3
即可在2.6+和3.0+中运行。 从您关联的部分的第一段引用:
为了将来的兼容性,Python 2.6添加了
bytes
作为str
类型的同义词,它还支持b''表示法。
请注意,正如它说的几行,Python 2.x bytes
/ str
与Python 3.x bytes
的类型不完全相同:“最值得注意的是,构造函数完全不同“。但是字节文字是相同的,除非在边缘情况下你将Unicode字符放入字节文字(在2.x中没有明确的含义,但做某些任意的事情,有时可能恰好是你所希望的,在3.x中,它是有保证的SyntaxError
)。