Pythonのbytes型に対するインデックスアクセスはintを返す

M5StackでBLE通信をしようとMicroPythonを書いてたところ気付いたのでメモ。

str型みたいにインデックスアクセスすると、長さ1のbytesが返ってくると思ったらintが返ってきた。

text = "Hello"
data = text.encode()

print(type(text))  # 当然str
print(type(data))  # もちろんbytes

print(type(text[0])) # <class 'str'>
print(type(data[0])) # <class 'int'>

そういえばPython多倍長整数でもint型になるし、整数->int、浮動小数点数->floatという区別しかないので、1バイトがintになってもいいかと思った。 (とはいえ1バイトでも多倍長整数でも同じ型になるのは内部でどう扱ってるんだろう)