2008-09-18 8 views
10

Je suis un peu confus sur la façon dont la bibliothèque standard va se comporter maintenant que Python (à partir de 3.0) est basé sur l'Unicode. Les modules tels que CGI et urllib utiliseront-ils des chaînes Unicode ou utiliseront-ils le nouveau type «bytes» et fourniront simplement des données codées?Est-ce que tout dans la bibliothèque standard traitera les chaînes comme unicode dans Python 3.0?

+0

Peut-être que cette question ne devrait pas être répondu par d'autres programmeurs, mais par les développeurs Python (indirectement, de préférence, parcourir les discussions du développeur ici: http://mail.python.org/pipermail/python-3000/) – tzot

Répondre

11

Logiquement, un grand nombre de choses comme les messages électroniques codés en MIME, les URL, les documents XML, etc., doivent être renvoyés sous la forme bytes et non en tant que chaînes. Cela pourrait causer une certaine consternation que les bibliothèques commencent à clouer pour Python 3 et les gens découvrent qu'ils doivent être plus conscients des bytes/string conversions qu'ils étaient pour str/unicode ...

6

L'un des grands Les choses à propos de cette question (et de Python en général), c'est que vous pouvez vous amuser dans l'interprète! Python 3.0 rc1 is currently available for download.

>>> import urllib.request 
>>> fh = urllib.request.urlopen('http://www.python.org/') 
>>> print(type(fh.read(100))) 
<class 'bytes'> 
+0

Je suis d'accord - J'ai compilé et installé rc1 plus tôt ce matin, j'ai passé trop de ma journée à jouer avec ça déjà! Je me demandais simplement s'il y avait une règle standard pour ce qui sera unicode et ce qui ne l'est pas. – hacama

1

Il y aura une danse en deux étapes ici. Voir Python 3000 and You.

L'étape 1 consiste à s'exécuter sous la version 3.0.

L'étape 2 est de repenser vos API pour, peut-être, faire quelque chose de plus sensé.

Le cours le plus probable est que les bibliothèques passeront à des chaînes Unicode pour rester aussi compatibles que possible avec leur fonctionnement habituel.

Ensuite, peut-être, certains vont passer en octets pour implémenter plus correctement les normes RFC pour les différents protocoles.

Questions connexes