Maison >développement back-end >Tutoriel Python >Comment convertir efficacement des chaînes en octets dans Python 3 ?

Comment convertir efficacement des chaînes en octets dans Python 3 ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-15 17:19:10577parcourir

How to Efficiently Convert Strings to Bytes in Python 3?

Comment convertir une chaîne en octets dans Python 3 avec un style pythonique optimal

Lorsque vous rencontrez l'erreur "TypeError : 'str' ne prend pas en charge l'interface tampon", vous avez deux options pour convertir une chaîne en octets :

  1. b = bytes(mystring, 'utf-8')
  2. b = mystring.encode('utf-8')

Choisir la méthode la plus pythonique

La documentation Python pour le type bytes suggère d'utiliser bytearray comme méthode préférée pour initialiser un tableau d'octets à partir d'un string :

bytearray([source[, encoding[, errors]]])

Dans cet esprit, puisque les octets peuvent effectuer diverses tâches au-delà de l'encodage de chaînes, il est logique que le constructeur accepte différents types de paramètres source.

Pour le codage de chaîne en particulier, l'utilisation de some_string.encode(encoding) est plus pythonique que bytes(some_string, encodage) :

  • Le premier est plus explicite quant au but recherché : encoder une chaîne avec un encodage spécifique.
  • Le second n'a pas de verbe explicite et est moins clair sur sa fonction.

De plus, unicode_string.encode(encoding) est également plus pythonique car son inverse est byte_string.decode(encoding), en maintenant la symétrie.

Optimisation des performances avec CPython

Si vous utilisez CPython, passer une chaîne Unicode à bytes appelle directement PyUnicode_AsEncodedString, qui est le sous-jacent implémentation de l'encodage. Par conséquent, appeler encode vous-même élimine un niveau d’indirection inutile et améliore potentiellement les performances.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn