149 votes

Que signifie préfixe ab avant une chaîne python?

Dans un code source python sur lequel je suis tombé, j'ai vu un petit b avant une chaîne comme dans:

 b"abcdef"
 

Je connais le préfixe u signifiant une chaîne unicode et le préfixe r pour un littéral de chaîne brute.

Que représentent les b et dans quel type de code source est-il utile, car il semble être exactement comme une chaîne simple sans préfixe?

145voto

Martijn Pieters Points 271458

L' b préfixe correspond à un bytes chaîne de caractères littérale.

Si vous voyez qu'il est utilisé dans Python 3 du code source, l'expression crée un bytes objet, n'est pas régulier Unicode str objet. Si vous voyez un écho dans votre interface Python ou en tant que partie d'une liste, dict ou autre conteneur de contenu, ensuite, vous voyez une bytes objet représenté à l'aide de cette notation.

bytes objets fondamentalement contenir une séquence d'entiers dans la plage de 0 à 255, mais quand représenté, Python affiche ces octets ASCII codepoints pour le rendre plus facile à lire leur contenu. Tous les octets à l'extérieur de la imprimable gamme de caractères ASCII sont présentés comme des séquences d'échappement (par exemple, \n, \x82, etc.).

bytes modèle de données binaires, y compris le texte codé. Si votre bytes de la valeur ne contenir du texte, vous devez d'abord décoder, en utilisant le codec approprié. Si les données sont encodées en UTF-8, par exemple, vous pouvez obtenir une Unicode str valeur:

strvalue = bytesvalue.decode('utf-8')

Python 2, les versions 2.6 et 2.7 également en charge la création de littéraux de chaîne à l'aide de b'..' chaîne de caractères littérale de la syntaxe, pour faciliter le développement de code qui fonctionne sur Python 2 et 3.

73voto

wRAR Points 13223

C'est Python3 bytes littéral . Ce préfixe est absent dans Python 2.5 et les versions antérieures (il équivaut à une chaîne simple de 2.x, tandis qu'une chaîne simple de 3.x équivaut à un littéral avec le préfixe u dans 2.x). En Python 2.6+, cela équivaut à une chaîne simple pour la compatibilité avec 3.x.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X