Wenn man sich die Dokumente sucht bytes
, es verweist Sie auf bytearray
:
Bytearray ([Quelle [, Codierung [, Fehler]]])
Gibt ein neues Array von Bytes zurück. Der Bytearray-Typ ist eine veränderbare Folge von ganzen Zahlen im Bereich von 0 <= x <256. Er enthält die meisten der üblichen Methoden für veränderliche Sequenzen, die unter Mutable Sequence Types beschrieben sind, sowie die meisten Methoden, die der Byte-Typ hat, siehe Bytes und Byte-Array-Methoden.
Der optionale Quellparameter kann verwendet werden, um das Array auf verschiedene Arten zu initialisieren:
Wenn es sich um eine Zeichenfolge handelt, müssen Sie auch die Codierungsparameter (und optional Fehler) angeben. bytearray () konvertiert dann den String mit str.encode () in Bytes.
Wenn es sich um eine Ganzzahl handelt, hat das Array diese Größe und wird mit Null-Bytes initialisiert.
Wenn es sich um ein Objekt handelt, das der Pufferschnittstelle entspricht, wird ein schreibgeschützter Puffer des Objekts verwendet, um das Byte-Array zu initialisieren.
Wenn es sich um eine Iterable handelt, muss es sich um eine Iterable von Ganzzahlen im Bereich 0 <= x <256 handeln, die als Anfangsinhalt des Arrays verwendet werden.
Ohne Argument wird ein Array der Größe 0 erstellt.
So bytes
kann viel mehr als nur einen String kodieren. Es ist pythonisch, dass Sie den Konstruktor mit jedem sinnvollen Quellparameter aufrufen können.
Für die Codierung einer Zeichenfolge denke ich, dass dies some_string.encode(encoding)
pythonischer ist als die Verwendung des Konstruktors, da es am selbstdokumentierendsten ist - "Nehmen Sie diese Zeichenfolge und codieren Sie sie mit dieser Codierung" ist klarer als bytes(some_string, encoding)
- es gibt kein explizites Verb, wenn Sie das verwenden Konstrukteur.
Bearbeiten: Ich habe die Python-Quelle überprüft. Wenn Sie eine Unicode-Zeichenfolge an bytes
CPython übergeben, wird PyUnicode_AsEncodedString aufgerufen. Dies ist die Implementierung von encode
; Sie überspringen also nur eine Indirektionsebene, wenn Sie sich encode
selbst anrufen .
Siehe auch Serdalis 'Kommentar - unicode_string.encode(encoding)
ist auch pythonischer, weil seine Umkehrung byte_string.decode(encoding)
und Symmetrie schön ist.