Python字节字符串子字符串切片返回不同的表示形式

时间:2018-12-23 19:10:21

标签: python arrays

在尝试修剪前括号和后括号-[和]-遇到意外情况。在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的新手,所以,我是否正确解释了这个?这很奇怪吗?

1 个答案:

答案 0 :(得分:2)

不,这并不奇怪:

>>> type(b'0')
<class 'bytes'>
>>> type(b'0'[0])
<class 'int'>

因此,bytes 是整数。显然,整数不能等于bytes对象,因为它毫无意义(例如,如何比较b'123'12?)。

引用docs

  

由于字节对象是整数序列(类似于元组),因此对于字节对象bb[0]将是整数,而b[0:1]将是一个长度为1的字节对象。