Python - 在zip()中迭代时将字节impicity转换为int

时间:2017-04-02 22:31:22

标签: python python-3.x

我的bytes已转换为int,但我不确切知道在哪里?

以此为例

Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)] on win32

>>> a = 'a'
>>> b = b'b'
>>> type(b)
<class 'bytes'>
>>> z = zip(a,b)
>>> type(b)
<class 'bytes'>
>>> for a,b in z:
    print(type(a),type(b))
<class 'str'> <class 'int'>
>>> type(b)
<class 'int'>

我猜这是某种强制但触发它的是什么?似乎没有使用zip迭代器?因为调用z.__next__()不会导致转换。

由于

1 个答案:

答案 0 :(得分:2)

文档(here)表示bytes是一个整数序列。在ziphere)的文档中进一步说,该zip遍历序列。这就是b变为int类型的原因。

您可以通过执行以下操作看到:

>>> b = b'b'
>>> for i in b:
...    print(type(i), i)
<class 'int'> 98

请注意,通过使用ab作为循环变量,您可以覆盖原始ab