Fonction Python octets ()

| | | | | | | | | | | | | | | | | | |

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`octets
  • encoding - > Encodage de chaîne source (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 utilisant str.encode() . Par conséquent, nous devons également fournir un encodage et éventuellement des erreurs, puisque encode () 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 classe Object , le buffer est Object 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