python'rb'模式read()vs read(1);返回值的类型

时间:2018-03-09 13:08:36

标签: python

我在这里阅读了许多相关的线程并深入研究了文档(Python 3.6),但没有找到为什么会发生这种情况(从Python shell中捕获):

with open('default_SysEx.syx', 'rb')
 as f:
    x = f.read(1)

x

b'\xf0'

with open('default_SysEx.syx', 'rb') as f:
    y=f.read()

y[0]

240

type(x)
<class 'bytes'>

type(y[0])
<class 'int'>

什么解释单读字节?它是read(),是列表吗?序列/迭代/发电机/屈服/...?

1 个答案:

答案 0 :(得分:0)

线索是您要打印的对象的类型。虽然x和y都是bytes个对象,但您正在打印&#34;整个&#34;一个字符串x,当您用y[0]打印它的单个字节时。

您可能会发现x[0]同样评估为240。

换句话说,type('\xf0')bytes,但type('\xf0[0])int