Погружение в Python 3
- Что нового в «Погружении в Python 3»
- Установка Python
- Ваша первая программа на Python
- Встроенные типы данных
- Генераторы
- Строки
- Регулярные выражения
- Замыкания и генераторы
- Классы и итераторы
- Подробнее об итераторах
- Тестирование
- Рефакторинг
- Файлы
- XML
- Сериализация объектов Python
- HTTP и веб-сервисы
- Пример: перенос chardet на Python 3
- Создание пакетов библиотек
- Перенос кода на Python 3 с помощью 2to3
- Особые названия методов
- Куда пойти
- Устранение проблем
- О книге
- О переводе
- Выходные данные
Автор: Марк Пилигрим (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».
Установка Python
Tempora mutantur nos et mutamur in illis. ~ Меняются времена, и мы меняемся вместе с ними. |
древнеримская поговорка |
Погружение
Добро пожаловать в Python 3. В этой главе вы установите Python 3, ту его версию, которая подходит именно вам.
Какой Python вам подходит?
Первое, что вам необходимо проделать с Python, — установить его. Или это уже сделано?
Если вы собираетесь работать с Python на удалённом сервере, ваш хостинг-провайдер, возможно, уже установил Python 3. Если у вас домашний компьютер с Linux, Python 3 тоже может быть уже установлен. В большинстве популярных дистрибутивах GNU/Linux по умолчанию установлен Python 2, немногие (но их число растёт) также включают Python 3. Mac OS X включает консольную версию Python 2, но до сих пор не включает Python 3. В Microsoft Windows не входит никакая версия Python. Но не отчаивайтесь! Python можно установить в несколько кликов, независимо от вашей операционной системы.
Простейший способ проверить, установлен ли Python 3 в вашем Linux или Mac OS X, — это открыть командную строку. В Linux поищите программу «Терминал» («Terminal») в меню приложений («Applications»). Она может находиться в подменю «Стандартные» («Accessories») или «Системные утилиты» («System»). В Mac OS X в папке /Application/Utilities/ должно быть приложение «Terminal.app».
Получив приглашение командной строки, просто введите python3 (строчными буквами, без пробелов) и посмотрите, что произойдёт. На моей домашней Linux-системе Python 3 уже установлен, и эта команда запускает интерактивную оболочку Python.
(Чтобы выйти из интерактивной оболочки Python, введите exit() и нажмите ↵ Enter.)
Мой хостинг-провайдер тоже предоставляет Linux с доступом к командной строке, но Python 3 на сервере не установлен. (Фу!)
mark@manganese:~$ python3bash: python3: command not foundИтак, вернёмся к вопросу, с которого начался этот раздел: «Какой Python вам подходит?» Любой, который работает на вашем компьютере.
|