Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Погружение в Python 3. Что нового в «Погружении в Python 3». или «минус первый уровень»




Погружение в Python 3

  1. Что нового в «Погружении в Python 3»
  2. Установка Python
  3. Ваша первая программа на Python
  4. Встроенные типы данных
  5. Генераторы
  6. Строки
  7. Регулярные выражения
  8. Замыкания и генераторы
  9. Классы и итераторы
  10. Подробнее об итераторах
  11. Тестирование
  12. Рефакторинг
  13. Файлы
  14. XML
  15. Сериализация объектов Python
  16. HTTP и веб-сервисы
  17. Пример: перенос chardet на Python 3
  18. Создание пакетов библиотек
  19. Перенос кода на Python 3 с помощью 2to3
  20. Особые названия методов
  21. Куда пойти
  22. Устранение проблем
  23. О книге
  24. О переводе
  25. Выходные данные

Автор: Марк Пилигрим (Mark Piligrim)

Перевод: Инициативная группа

Источник оригинала: ru. wikisource. org

Лицензия: данный материал распространяется по лицензии GNU FDL.

Что нового в «Погружении в Python 3»

 

Isn’t this where we came in?
Pink Floyd, The Wall

или «минус первый уровень»

Вы прочитали «Погружение в Python» и, может быть, даже купили бумажную версию. (Спасибо! ) Вы уже неплохо знаете Python 2. Вы готовы окунуться с головой в Python 3… Если всё это про вас, читайте дальше. (Если что-либо из этого неверно, вам следует начать с начала. )

Вместе с Python 3 поставляется скрипт под названием 2to3. Изучите его. Полюбите его. Используйте его. «Перенос кода на Python 3 с помощью 2to3» — справочник по всем тем изменениям, которые 2to3 может проделать автоматически. Поскольку многое из этого — изменения в синтаксисе, лучше всего начать именно с них. (print теперь функция, `x` не работает и т. д. )

«Пример: перенос chardet на Python 3» рассказывает о моей (в конце концов, успешной) попытке перенести одну нетривиальную библиотеку с Python 2 на Python 3. Это может вам помочь. А может и не помочь. Кривая обучения получается довольно крутой из-за того, что вам сначала необходимо хоть немного разобраться в этой библиотеке, чтобы понимать, что именно в ней поломалось и как я это исправил. Часто программы ломаются на строках (strings). Кстати, о строках…

Строки… Ох… С чего бы начать? … В Python 2 были строки (str) и юникодные строки (unicode). В Python 3 — байты (bytes) и строки (string). То есть все строки стали теперь юникодными, а когда хотите работать с кучей байтов, вы используете новый тип bytes. Python 3 никогда автоматически не преобразовывает строки в байты или наоборот, поэтому, если вы не уверены, что из них вы имеете в какой-то определённый момент, ваш код почти наверняка поломается. В главе о строках эта ситуация разбирается подробнее.

Байты и строки ещё не раз будут появляться в книге.

  • В главе «Файлы» вы узнаете разницу между чтением файлов в «двоичном» и «текстовом» режимах. Чтение (и запись! ) файлов в текстовом режиме требует указание параметра encoding (кодировка). Одни файловые методы при работе с текстовыми файлами подсчитывают символы, другие считают байты. Если в вашей программе предполагается, что один символ == одному байту, она будет падать на многобайтовых символах.
  • В главе «HTTP и веб-сервисы» модуль httplib2 принимает заголовки и данные по HTTP. Заголовки HTTP возвращаются как строки, а тело ответа HTTP возвращается в виде байтов.
  • В главе «Сериализация объектов Python» вы узнаете, почему модуль pickle в Python 3 определяет новый формат данных, несовместимый с Python 2. (Подсказка: это из-за различий между байтами и строками. ) Ещё есть JSON, который вовсе не поддерживает тип bytes. Я покажу вам, как справиться с этим ограничением.
  • Глава «Пример: перенос chardet на Python 3» — просто кровавое месиво из байтов и строк.

Даже если вы не задумываетесь о Юникоде (рано или поздно всё равно придётся), вы захотите прочитать о форматировании строк в Python 3, оно совершенно отличается от такового в Python 2.

Итераторы в Python 3 везде, и сейчас я разбираюсь в них намного лучше, чем пять лет назад, когда я писал «Погружение в Python». Вам тоже необходимо разбираться в них, потому что множество функций, которые в Python 2 возвращали списки, теперь в Python 3 возвращают итераторы. Как минимум, следует прочитать вторую половину главы «Итераторы» и вторую половину главы «Подробнее об итераторах».

По многочисленным просьбам я добавил приложение «Особые названия методов», которое немного похоже на главу «Модель данных» документации по Python, только с приколами.

Когда я писал «Погружение в Python», все доступные на тот момент библиотеки для работы с XML были жутким отстоем. Впоследствии Фредрик Лунд (Fredrik Lundh) написал ElementTree, которая уже совсем не отстой. Питоновские боги, показав свою мудрость, внедрили ElementTree в стандартную библиотеку, и теперь она составляет основу моей новой главы про XML. Старые способы разбора XML всё ещё доступны, но их надо избегать, потому что они отстойные!

Ещё из нового в Python — не в языке, а в сообществе — появление репозиториев вроде The Python Package Index (PyPI). К Python прилагаются утилиты для пакетирования вашего кода в стандартных форматах и дальнейшего его распространения через PyPI. Подробнее в главе «Пакетирование библиотек Python».

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...