Python 3では、bytes
とbytearray
という2つのデータ型があります。これらはどちらもバイトの配列を保持しますが、その使い方には重要な違いがあります。
bytesとは
bytes
はイミュータブル(変更不可能)なデータ型で、一度作成するとその要素を変更することはできません。bytes
オブジェクトは以下のように構築することができます。
>>> bytes(5)
b'\\x00\\x00\\x00\\x00\\x00'
>>> bytes([116, 117, 118])
b'tuv'
>>> b'tuv'
b'tuv'
>>> bytes('tuv', 'utf-8')
b'tuv'
>>> 'tuv'.encode('utf-8')
b'tuv'
bytearrayとは
一方、bytearray
はミュータブル(変更可能)なデータ型で、要素を自由に変更することができます。bytearray
オブジェクトは以下のように構築することができます。
>>> bytearray(5)
bytearray(b'\\x00\\x00\\x00\\x00\\x00')
>>> bytearray([116, 117, 118])
bytearray(b'tuv')
>>> bytearray('tuv', 'utf-8')
bytearray(b'tuv')
bytesとbytearrayの違い
bytes
とbytearray
の主な違いは、bytes
がイミュータブルであるのに対し、bytearray
はミュータブルであるということです。これは、bytes
オブジェクトは一度作成するとその要素を変更することができないのに対し、bytearray
オブジェクトは要素を自由に変更することができるという意味です。
また、bytes
とbytearray
は、文字列をエンコードおよびデコードする関数を提供しています。
まとめ
Pythonのbytes
とbytearray
は、どちらもバイトの配列を保持するデータ型ですが、その使い方には重要な違いがあります。bytes
はイミュータブルで、一度作成するとその要素を変更することはできません。一方、bytearray
はミュータブルで、要素を自由に変更することができます。これらの違いを理解することで、Pythonプログラミングがより効率的になります。