在 Python 3 中,当我索引字节数组时会发生什么?

gwg*_*gwg 3 arrays character-encoding python-3.x

在 Python 3 中,我可以通过编码字符串来创建字节数组:

>>> foo = 'abc'
>>> bar = foo.encode('utf-8')
>>> bar
b'abc'
Run Code Online (Sandbox Code Playgroud)

但是当我索引该字节数组时,我得到了其他东西:

>>> bar[0]
97
Run Code Online (Sandbox Code Playgroud)

这是什么以及为什么不是

b'a'
Run Code Online (Sandbox Code Playgroud)

Ign*_*ams 5

它是一个小 int,因为这就是 PEP 3137 中索引字节的定义:“不可变字节和可变缓冲区”

索引

索引字节和字节数组返回小整数[...]

对 bytearray 对象的一项的赋值接受 range(256) 中的 int。[...]

如果你愿意b'a',那就切片吧。

3>> b'abc'[0:1]
b'a'
Run Code Online (Sandbox Code Playgroud)