İçin dokümanlara bakarsanız, sizi şu bytes
noktalara yönlendirir bytearray
:
bytearray ([kaynak [, kodlama [, hatalar]]])
Yeni bir bayt dizisi döndürür. Bytearray tipi, 0 <= x <256 aralığındaki değişebilir bir tamsayı dizisidir. Değişken Dizi Tiplerinde açıklanan olağan değişebilir dizi yöntemlerinin yanı sıra bayt tipinin sahip olduğu yöntemlerin çoğuna sahiptir, Bayt ve Bayt Dizisi Yöntemleri.
İsteğe bağlı source parametresi, diziyi birkaç farklı şekilde başlatmak için kullanılabilir:
Bir dize ise, kodlama (ve isteğe bağlı olarak hatalar) parametrelerini de vermelisiniz; bytearray () daha sonra dizeyi str.encode () kullanarak bayta dönüştürür.
Bir tamsayı ise, dizi bu boyuta sahip olur ve boş baytlarla başlatılır.
Arabellek arayüzüne uyan bir nesne ise, bayt dizisini başlatmak için nesnenin salt okunur bir tamponu kullanılır.
Yinelenebilirse, dizinin ilk içeriği olarak kullanılan 0 <= x <256 aralığında bir tamsayı yinelenebilir olmalıdır.
Bağımsız değişken olmadan, 0 boyutunda bir dizi oluşturulur.
Yani bytes
bir dizeyi kodlamaktan çok daha fazlasını yapabilir. Yapıcıyı mantıklı herhangi bir kaynak parametresi türüyle çağırmanıza izin vermesi Pythonic'tir.
Bir dize kodlamak için, ben some_string.encode(encoding)
bu yapıcı kullanmak daha Pythonic olduğunu düşünüyorum , çünkü en kendi kendine belgeleme - "Bu dize almak ve bu kodlama ile kodlamak" daha açık bytes(some_string, encoding)
- kullandığınızda hiçbir açık fiil yok yapıcı.
Düzenleme: Python kaynağını kontrol ettim. bytes
CPython kullanarak bir unicode dizesi iletirseniz , bunun uygulanması olan PyUnicode_AsEncodedString öğesini çağırır encode
; yani, encode
kendinizi ararsanız, sadece bir dolaylı aktarım seviyesini atlıyorsunuz demektir .
Ayrıca, Serdalis'in yorumuna da bakınız - unicode_string.encode(encoding)
tersi byte_string.decode(encoding)
ve simetri güzel olduğu için daha Pitoniktir .