Я немного смущен тем, как стандартная библиотека будет вести себя теперь, когда Python (из 3.0) основан на Unicode. Будут ли модули, такие как CGI и urllib, использовать строки Unicode, или они будут использовать новый тип "байтов" и просто предоставить закодированные данные?
Будет ли все в стандартной библиотеке обрабатывать строки как unicode в Python 3.0?
Ответ 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 для различных протоколов.