Est-ce que tout dans la bibliothèque standard traitera les chaînes comme unicode dans Python 3.0?
-
01-07-2019 - |
Question
Je suis un peu confus quant au comportement de la bibliothèque standard maintenant que Python (à partir de la version 3.0) est basé sur Unicode. Des modules tels que CGI et urllib utiliseront-ils des chaînes unicode ou utiliseront-ils le nouveau type "octets" et fourniront-ils uniquement des données codées?
La solution
Logiquement, beaucoup d'éléments, tels que les messages électroniques codés MIME, les URL, les documents XML, etc., doivent être renvoyés sous forme de octets
et non de chaînes. Cela pourrait semer la consternation au moment où les bibliothèques commencent à être clouées pour Python 3 et que les utilisateurs découvrent qu'ils doivent être plus conscients des conversions octets
/ string
qu'ils ne l'étaient auparavant. str
/ unicode
...
Autres conseils
Un des points positifs de cette question (et de Python en général) est que vous pouvez jouer avec l’interprète! Python 3.0 rc1 est actuellement disponible au téléchargement .
>>> import urllib.request
>>> fh = urllib.request.urlopen('http://www.python.org/')
>>> print(type(fh.read(100)))
<class 'bytes'>
Il y aura une danse en deux temps ici. Voir Python 3000 et vous .
L’étape 1 consiste à utiliser la version 3.0.
L'étape 2 consiste à repenser votre API pour, peut-être, faire quelque chose de plus sensé.
Le plus probable est que les bibliothèques passeront aux chaînes unicode pour rester aussi compatibles que possible avec leur mode de fonctionnement actuel.
Ensuite, certains passeront peut-être aux octets pour mieux appliquer les normes RFC pour les divers protocoles.