Будет ли все в стандартной библиотеке обрабатывать строки как unicode в Python 3.0?

Я немного смущен тем, как стандартная библиотека будет вести себя теперь, когда Python (из 3.0) основан на Unicode. Будут ли модули, такие как CGI и urllib, использовать строки Unicode, или они будут использовать новый тип "байтов" и просто предоставить закодированные данные?

Ответ 1

Логически многие вещи, такие как MIME-кодированные почтовые сообщения, URL-адреса, XML-документы и т.д., должны быть возвращены как bytes не строки. Это может вызвать некоторое недоумение, поскольку библиотеки начинают прибиваться к Python 3, и люди обнаруживают, что они должны лучше понимать преобразования bytes/string, чем они были для str/unicode...

Ответ 2

Одна из замечательных вещей об этом вопросе (и Python в целом) заключается в том, что вы можете просто возиться в интерпретаторе! Python 3.0 rc1 в настоящее время доступен для скачивания.

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

Ответ 3

Здесь будет двухэтапный танец. См. Python 3000 и вы.

Шаг 1 - это запуск под 3.0.

Шаг 2 - переосмыслить ваш API, возможно, сделать что-то более разумное.

Наиболее вероятным является то, что библиотеки будут переключаться на строки unicode, чтобы оставаться максимально совместимыми с тем, как они работали.

Затем, возможно, некоторые переключатся на байты, чтобы более правильно реализовать стандарты RFC для различных протоколов.