Se guardi i documenti per bytes
, ti indicano bytearray
:
bytearray ([fonte [, codifica [, errori]]])
Restituisce un nuovo array di byte. Il tipo bytearray è una sequenza mutabile di numeri interi nell'intervallo 0 <= x <256. Ha la maggior parte dei metodi usuali di sequenze mutabili, descritti in Tipi di sequenza mutabili, così come la maggior parte dei metodi che ha il tipo di byte, vedi Byte e Metodi di array di byte.
Il parametro sorgente opzionale può essere utilizzato per inizializzare l'array in diversi modi:
Se è una stringa, è necessario fornire anche i parametri di codifica (e, facoltativamente, errori); bytearray () quindi converte la stringa in byte usando str.encode ().
Se è un numero intero, l'array avrà quella dimensione e verrà inizializzato con byte null.
Se si tratta di un oggetto conforme all'interfaccia buffer, verrà utilizzato un buffer di sola lettura dell'oggetto per inizializzare l'array di byte.
Se è un iterabile, deve essere un iterabile di numeri interi nell'intervallo 0 <= x <256, che vengono utilizzati come contenuto iniziale dell'array.
Senza un argomento, viene creato un array di dimensioni 0.
Quindi bytes
può fare molto di più che semplicemente codificare una stringa. È Pythonic che ti permetterebbe di chiamare il costruttore con qualsiasi tipo di parametro sorgente che abbia senso.
Per codificare una stringa, penso che some_string.encode(encoding)
sia più Pythonic che usare il costruttore, perché è il più autocompassante - "prendere questa stringa e codificarla con questa codifica" è più chiaro di bytes(some_string, encoding)
- non c'è un verbo esplicito quando si usa il costruttore.
Modifica: ho controllato la fonte Python. Se si passa una stringa unicode bytes
all'utilizzo di CPython, chiama PyUnicode_AsEncodedString , che è l'implementazione di encode
; quindi stai solo saltando un livello di riferimento indiretto se ti chiami encode
.
Inoltre, vedi il commento di Serdalis - unicode_string.encode(encoding)
è anche più pitone perché è inverso byte_string.decode(encoding)
e la simmetria è piacevole.