Jika Anda melihat dokumen untuk bytes
, itu mengarahkan Anda ke bytearray
:
bytearray ([sumber [, penyandian [, kesalahan]]])
Kembalikan array byte baru. Tipe bytearray adalah urutan bilangan bulat yang dapat berubah dalam kisaran 0 <= x <256. Ia memiliki sebagian besar metode urutan urutan yang dapat berubah, yang dijelaskan dalam Jenis Urutan yang Dapat Dimatikan, serta sebagian besar metode yang dimiliki tipe byte, lihat Bytes dan Metode Array Byte.
Parameter sumber opsional dapat digunakan untuk menginisialisasi array dengan beberapa cara berbeda:
Jika ini adalah string, Anda juga harus memberikan parameter penyandian (dan opsional, kesalahan); bytearray () kemudian mengonversi string menjadi byte menggunakan str.encode ().
Jika bilangan bulat, array akan memiliki ukuran itu dan akan diinisialisasi dengan byte nol.
Jika itu adalah objek yang sesuai dengan antarmuka buffer, buffer read-only dari objek akan digunakan untuk menginisialisasi array byte.
Jika iterable, itu harus iterable dari integer dalam rentang 0 <= x <256, yang digunakan sebagai konten awal array.
Tanpa argumen, array ukuran 0 dibuat.
Jadi bytes
bisa melakukan lebih dari sekadar menyandikan string. Ini Pythonic yang akan memungkinkan Anda untuk memanggil konstruktor dengan segala jenis parameter sumber yang masuk akal.
Untuk pengkodean string, saya pikir itu some_string.encode(encoding)
lebih Pythonic daripada menggunakan konstruktor, karena itu adalah yang paling mendokumentasikan diri - "ambil string ini dan kodekan dengan pengkodean ini" lebih jelas daripada bytes(some_string, encoding)
- tidak ada kata kerja eksplisit ketika Anda menggunakan konstruktor.
Sunting: Saya memeriksa sumber Python. Jika Anda melewatkan string unicode bytes
menggunakan CPython, ia memanggil PyUnicode_AsEncodedString , yang merupakan implementasi dari encode
; jadi Anda hanya melewatkan tingkat tipuan jika Anda memanggil encode
diri sendiri.
Juga, lihat komentar Serdalis - unicode_string.encode(encoding)
juga lebih Pythonic karena kebalikannya byte_string.decode(encoding)
dan simetrinya bagus.