bytearray の罠

mutableなクセにメソッドはstrと同じくout-placeという中途半端なbytearray.
strとの違いは変更が可能

In [4]: ba = bytearray('foo')
In [5]: ba[1] = 'O'
In [6]: ba
Out[6]: bytearray(b'fOo')

というだけだと思っていたのだが、実はこんな所にも変更が

In [7]: ba[1]
Out[7]: 79
In [8]: ord('O')
Out[8]: 79
In [9]: ba[1:2]
Out[9]: bytearray(b'O')

要素を一つだけ取ろうと思った場合、部分 bytearray が返ってくるのではなくて数値が返ってくる。
確かにこっちの方がパフォーマンス的には有利なんだけど、知らないとハマるな。

このブログに乗せているコードは引用を除き CC0 1.0 で提供します。