Python bytes () &une fonction intégrée qui renvoie un objet byte qui est une séquence immuable d`entiers dans la plage 0 "= x "256. Selon le type d`objet passé comme source, il initialise l`objet byte en conséquence.
Syntaxe
Prend trois paramètres optionnels, à savoir :
source
- > La source qui initialise le tableau d`octetsencoding
- > Encodage de chaînesource
(peut être UTF-8, etc.).erreurs
- > Comportement de la fonction lorsque l`encodage de la chaîne source échoue.
byte_array = bytes (source, encoding, errors)
Puisque les trois arguments sont facultatifs, nous peut passer une chaîne vide pour générer un tableau d`octets vide (un tableau d`octets de taille 0).
< / ins>
Selon le type de paramètre source
, le tableau d`octets correspondant sera initialisé.
- Si
source
est une chaîne, Python bytes() convertit la chaîne en octets en utilisantstr.encode()
. Par conséquent, nous devons également fournir un encodage et éventuellement des erreurs, puisqueencode ()
est utilisé pour traiter la chaîne. - Si
source
est un entier, bytes() créera un tableau de la taille entière donnée, tous initialisés à NULL. - Si
source
est de classeObject
, le buffer estObject
en lecture seule sera utilisé pour initialiser le tableau d`octets . - Si
source
est itérable, il doit s`agir d`un entier itératif dans la plage 0 "= x "256, qui sont utilisés comme contenu initial du tableau.
Si source
&None
, cela entraînera une TypeError
car il ne peut pas convertir le Aucun objet
à un tableau d`octets.
Pour mieux comprendre la fonction, voyons quelques exemples.
Aucun argument
b = bytes () print (b) c = bytes (None ) print (c)
Quitter
b`` TypeError : impossible de convertir l`objet `NoneType` en octets
Avec la chaîne d`origine
Toute chaîne fournie sans encodage lèvera un TypeErreur
.
De même, essayer de modifier l`objet bytes
entraînera également la même exception, car il est de nature immuable.
try: a = bytes (`Hello from AskPython`) except TypeError: print (` Nous devons toujours spécifier l`encodage de chaîne ! `) b = bytes (` Bonjour de AskPython`, `UTF-8`) print (type (b), b) try : b [0] = 10 except TypeErro r: print (` byte objects are immutable! ` )
Exit
Nous devons toujours spécifier l`encodage de chaîne ! "classe `octets` > Les objets byte b`Hello from AskPython` sont immuables !
Avec un entier original
Un entier initialise ce nombre d`objets élément byte dans le tableau.
a = octets (10) print (type (a), a)
Quitter
"classe `octets` > b`x00x00x00x00x00x00x00x00x00x00`
Comme vous pouvez le voir, l`objet bytes est un tableau initialisé à zéro de 10 éléments.
Avec une source itérative
Cela initialise le tableau avec len (itérable)
le nombre d`éléments, dont chacun a une valeur égale à l`élément correspondant dans l`itérable.
Les valeurs ‚Äã‚Äãodes tableaux d`octets peuvent être accessibles par itération régulière, mais ils ne peuvent pas être modifiés car ils sont immuables.
a = bytes ([1, 2, 3]) print (type (a), a) print (`Length =` , len (a)) # Pour accéder aux valeurs du tableau d`octets, nous pouvons le parcourir ! pour byte_obj dans a : print (byte_object)
Quitter
"classe `octets` > b`x01x02x03` Length = 3 1 2 3
Tout autre élément sur Iterable entraînera TypeError
> > > a = octets ([1, 2, 3, `Hi`]) Traceback (dernier appel le plus récent) : Fichier" "stdin > ", ligne 1, dans "module > TypeError : l`objet `str` ne peut pas être interprété comme un entier