Il bprefisso indica una bytesstringa letterale .
Se lo vedi usato nel codice sorgente di Python 3, l'espressione crea un bytesoggetto , non un normale oggetto Unicodestr . Se lo vedi echeggiare nella tua shell Python o come parte di un elenco, dict o altri contenuti del contenitore, allora vedi un bytesoggetto rappresentato usando questa notazione.
bytesgli oggetti fondamentalmente contengono una sequenza di numeri interi nell'intervallo 0-255, ma quando rappresentati, Python visualizza questi byte come punti di codice ASCII per facilitare la lettura del loro contenuto. I byte di fuori della stampabile gamma di caratteri ASCII vengono mostrati come sequenze di escape (ad esempio \n, \x82ecc). Al contrario, è possibile utilizzare sia caratteri ASCII che sequenze di escape per definire i valori dei byte; per i valori ASCII viene utilizzato il loro valore numerico (es b'A'== b'\x41')
Poiché un bytesoggetto è costituito da una sequenza di numeri interi, puoi costruire un bytesoggetto da qualsiasi altra sequenza di numeri interi con valori compresi tra 0 e 255, come un elenco:
bytes([72, 101, 108, 108, 111])
e l'indicizzazione ti restituisce i numeri interi (ma l'affettatura produce un nuovo bytesvalore; per l'esempio sopra, value[0]ti dà 72, ma value[:1]è b'H'come 72 è il punto di codice ASCII per la lettera maiuscola H ).
bytesmodellare i dati binari , compreso il testo codificato . Se il tuo bytesvalore contiene testo, devi prima decodificarlo, utilizzando il codec corretto. Se i dati sono codificati come UTF-8, ad esempio, puoi ottenere un strvalore Unicode con:
strvalue = bytesvalue.decode('utf-8')
Al contrario, per passare dal testo in un stroggetto a bytesè necessario codificare . Devi decidere una codifica da utilizzare; l'impostazione predefinita è utilizzare UTF-8, ma ciò di cui avrai bisogno dipende in gran parte dal tuo caso d'uso:
bytesvalue = strvalue.encode('utf-8')
Puoi anche usare il costruttore, bytes(strvalue, encoding)per fare lo stesso.
Entrambi i metodi di decodifica e codifica richiedono un argomento aggiuntivo per specificare come devono essere gestiti gli errori .
Python 2, le versioni 2.6 e 2.7 supportano anche la creazione di stringhe letterali usando b'..'la sintassi di string literal, per semplificare il codice che funziona sia su Python 2 che su 3.
bytesgli oggetti sono immutabili, proprio come le strstringhe. Usa un bytearray()oggetto se devi avere un valore di byte modificabili.