在尝试修剪前括号和后括号-[和]-遇到意外情况。在python 3.7解释器中:
>>> string = [b'0123456789']
>>> string[0][:5]
b'01234'
>>> string[0][0]
48
>>> string[0][:5] == b'01234'
True
>>> string[0][0] == b'0'
False
在我看来,这很矛盾。我是Python的新手,所以,我是否正确解释了这个?这很奇怪吗?
答案 0 :(得分:2)
不,这并不奇怪:
>>> type(b'0')
<class 'bytes'>
>>> type(b'0'[0])
<class 'int'>
因此,bytes
的 是整数。显然,整数不能等于bytes
对象,因为它毫无意义(例如,如何比较b'123'
和12
?)。
引用docs:
由于字节对象是整数序列(类似于元组),因此对于字节对象
b
,b[0]
将是整数,而b[0:1]
将是一个长度为1的字节对象。