İçin dokümanlara bakarsanız, sizi şu bytesnoktalara 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 bytesbir 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. bytesCPython kullanarak bir unicode dizesi iletirseniz , bunun uygulanması olan PyUnicode_AsEncodedString öğesini çağırır encode; yani, encodekendinizi 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 .