我试图通过添加
str(bytes)
参数来使一些代码 -bb
在 Python 3 上安全,这会将 str(bytes)
和 bytes/str 比较都变成错误。
发出有关 str(bytes_instance)、str(bytearray_instance) 和 将 bytes/bytearray 与 str 进行比较。 (-bb:问题错误)
该程序失败了,因为一个库试图构建一个包含
str
和 bytes
的集合,但它不能交互式地重现:set([b'foo', u'bar'])
有效。为什么只有set([b'foo', u'foo'])
会失败?
通过实验:
set(['foo', b'foo'])
返回包含两个对象的集合'foo'
和 b'foo'
哈希为相等的值-bb
>>> set(['foo', b'foo'])
{b'foo', 'foo'}
>>> hash('foo')
7554140378331821102
>>> hash(b'foo')
7554140378331821102
>>> hash('foo') == hash(b'foo')
True
>>> 'foo' == b'foo'
False