Le bpréfixe signifie une byteschaîne littérale .
Si vous le voyez utilisé dans le code source Python 3, l'expression crée un bytesobjet , pas un objet Unicodestr normal . Si vous le voyez en écho dans votre shell Python ou dans le cadre d'une liste, d'un dict ou d'un autre contenu de conteneur, vous voyez un bytesobjet représenté à l'aide de cette notation.
bytesLes objets contiennent essentiellement une séquence d'entiers compris entre 0 et 255, mais lorsqu'ils sont représentés, Python affiche ces octets sous forme de points de code ASCII pour faciliter la lecture de leur contenu. Tous les octets en dehors de la printable plage de caractères ASCII sont représentés comme des séquences d'échappement (par exemple \n, \x82, etc.). Inversement, vous pouvez utiliser à la fois des caractères ASCII et des séquences d'échappement pour définir des valeurs d'octet; pour les valeurs ASCII, leur valeur numérique est utilisée (par exemple b'A'== b'\x41')
Étant donné qu'un bytesobjet est constitué d'une séquence d'entiers, vous pouvez construire un bytesobjet à partir de n'importe quelle autre séquence d'entiers avec des valeurs comprises entre 0 et 255, comme une liste:
bytes([72, 101, 108, 108, 111])
et l'indexation vous rend les entiers (mais le découpage produit une nouvelle bytesvaleur; pour l'exemple ci-dessus, value[0]vous donne 72, mais value[:1]c'est b'H'comme 72 est le point de code ASCII pour la lettre majuscule H ).
bytesmodèle de données binaires , y compris le texte codé . Si votre bytesvaleur contient du texte, vous devez d'abord le décoder en utilisant le bon codec. Si les données sont encodées en UTF-8, par exemple, vous pouvez obtenir une strvaleur Unicode avec:
strvalue = bytesvalue.decode('utf-8')
Inversement, pour passer du texte dans un strobjet à bytesvous devez encoder . Vous devez décider du codage à utiliser; la valeur par défaut est d'utiliser UTF-8, mais ce dont vous aurez besoin dépend fortement de votre cas d'utilisation:
bytesvalue = strvalue.encode('utf-8')
Vous pouvez également utiliser le constructeur bytes(strvalue, encoding)pour faire de même.
Les méthodes de décodage et d'encodage prennent un argument supplémentaire pour spécifier comment les erreurs doivent être gérées .
Python 2, les versions 2.6 et 2.7 prennent également en charge la création de littéraux de chaîne à l'aide de b'..'la syntaxe de littéral de chaîne, pour faciliter le code qui fonctionne à la fois sur Python 2 et 3.
bytesles objets sont immuables, tout comme les strchaînes. Utilisez un bytearray()objet si vous avez besoin d'une valeur d'octets mutable.