О книге

Книга разделена на шесть частей.

Первая часть книги посвящена основам языка, которые являются фундаментом для дальнейшего его изучения. В главах 1 – 3, посвящённых подготовке к работе с Python, рассматриваются выбор ОС и установка её пакетов, выбор редактора, использование Git и GitHub. Кроме того, в них рассматриваются система установки пакетов Python и способ изоляции разных версий и пакетов Python, а также готовые виртуальные машины для выполнения заданий. В главах 4 – 7 изложены основы Python. Вы узнаете, какие базовые типы данных поддерживает Python, как с ними работать, какие возможности и ограничения есть у них. Создание базовых скриптов, получение информации от пользователя и передача аргументов созданному скрипту, рассматриваются в главе 5. Глава 6 описывает механизмы контроля хода программы: условия (if, else), циклы (for, while) и работу с исключениями. В главе 7 завершается знакомство с основами Python описанием принципов работы с файлами, и, в завершение первой части, приводятся примеры использования пройденных тем для решения задач в главе 8.

Вторая часть описывает различные техники повторного использования кода: функции, модули, итераторы и генераторы. В главе 9 описано, как создать функцию, какие типы параметров и аргументов она поддерживает. Разговор о встроенных функциях и о том, как их использовать, ведётся в главе 10. Глава 11 знакомит с модулями, их созданием, а также с повторным использованием кода из других скриптов. В главе 12 рассказывается про различные полезные модули Python, такие как subprocess, ipaddress, argparse и другие.

Третья часть знакомит Вас с регулярными выражениями. В ней рассматривается и синтаксис регулярных выражений, и как с ними работать в Python. После этой главы Вы с лёгкостью сможете получать нужную информацию из вывода команд.

Четвёртая часть содержит необходимую информацию про запись и передачу данных средствами Python. В главе 16 рассматривается стандарт Unicode и его использование в Python, а глава 17 знакомит с форматами CSV, YAML и JSON. Формат CSV позволит работать с табличными данными – это могут быть данные из таблицы, базы данных или системы мониторинга. YAML удобно использовать для записи параметров в структурированном формате – как вручную, так и автоматически. Более того, YAML используется как язык описания сценариев в Ansible. Формат JSON подойдет для сохранения полученной информации, и, кроме того, он часто используется в интернете как формат передачи данных разных API. В главе 18 рассматривается работа с базами данных на примере SQLite, рассматриваются и основы языка SQL, и как работать с базами данных из Python.

Пятая часть рассказывает про работу с сетевым оборудованием через Python. В главе 19 рассказ посвящён подключению к сетевому оборудованию через Telnet и SSH, рассматривается использование нескольких полезных модулей – каждый из них использует несколько отличный от другого модуля подход. Глава 20 объясняет, как подключаться к оборудованию параллельно, используя потоки и процессы, а в главе 21 рассматривается язык шаблонов Jinja2. Он позволит создавать шаблоны конфигурации с нуля, и таким образом, вместо замены параметров в текстовом файле, Вы легко сможете сгенерировать нужные команды с помощью Python. В главе 22 разговор посвящён модулю TextFSM, задача которого является обратной модулю Jinja2. Это библиотека от Google, которая позволяет обрабатывать вывод команд show (и любых других аналогичных), и получать из него значения в виде переменных, то есть проводить парсинг вывода. Для обработки команды создается отдельный шаблон, который описан с помощью регулярных выражений.

Шестая часть посвящена основам работы с Ansible, а также модулям для работы с оборудованием Cisco. Этой информации будет достаточно, чтобы начать использовать Ansible, но, так как это лишь небольшая часть его возможностей, то остальное вынесено в отдельную книгу.

В приложениях собраны те темы, которые не вошли в другие разделы, но которые всё равно очень полезны.

И, наконец, в последней главе приводятся рекомендации по дальнейшему обучению.

Книга всегда будет оставаться бесплатной, поэтому Вам не нужно переживать, что она будет удалена.

Требуемые версии ОС и Python

Все примеры и выводы терминала в книге показываются на Debian Linux. В книге используется Python 3.6, но для большинства примеров подойдет и Python 3.4, и 3.5. Только в некоторых примерах требуется версия 3.6 или выше чем 3.5. Это всегда явно указано и, как правило, касается дополнительных возможностей.

Примеры

Все примеры, которые используются в книге, располагаются в репозитории. Примеры, которые рассматриваются в разделах книги, являются обучающими. Это значит, что они не обязательно показывают лучший вариант решения задачи, так как они основаны только на той информации, которая рассматривалась в предыдущих главах книги. Кроме того, довольно часто примеры, которые давались в разделах, развиваются в заданиях. То есть, в заданиях Вам нужно будет сделать лучшую, более универсальную, и, в целом, более правильную версию кода. Если есть возможность, лучше набирать код, который используется в книге, самостоятельно, или, как минимум, скачать примеры и попробовать что-то в них изменить – так информация будет лучше запоминаться. Если такой возможности нет, например, когда Вы читаете книгу в дороге, лучше повторить примеры самостоятельно позже. В любом случае, обязательно нужно делать задания вручную.

Задания

Все задания и вспомогательные файлы можно скачать в репозитории, том же, где располагаются примеры кода. Если в заданиях раздела есть задания с буквами (например, 5.2a), то нужно выполнить сначала задания без букв, а затем с буквами. Задания с буквами, как правило, немного сложнее заданий без букв и развивают идею в соответствующем задании без буквы. Если получается, лучше делать задания по порядку. В книге специально не приведены ответы на задания, так как, к сожалению, когда есть ответы, очень часто вместо того, чтобы попытаться решить сложное задание самостоятельно, подглядывают в них. Конечно, иногда возникает ситуация, когда никак не получается решить задание – попробуйте отложить его, задать вопрос в Slack и сделать какое-либо другое.

На Stack Overflow есть ответы практически на любые вопросы. Так что, если Google отправил Вас на него, это, с большой вероятностью значит, что ответ найден. Запросы, конечно же, лучше писать на английском – по Python очень много материалов и, как правило, подсказку найти легко

Ответы могли бы показать, как ещё можно выполнить задание или же как лучше это сделать. Но на этот счёт не следует переживать, так как, скорее всего, в следующих разделах встретится пример, в котором будет показано, как писать такой код.

Тесты

Для части тем книги созданы тесты:

Эти тесты можно использовать как для проверки знаний, так и в роли заданий. Очень полезно пройти тест после прочтения соответствующей темы. Он позволит Вам вспомнить материал темы, а также увидеть на практике разные аспекты работы с Python. Постарайтесь сначала ответить самостоятельно, а затем подсмотреть ответы в IPython по тем вопросам, в которых Вы сомневаетесь.

Презентации

Для всех тем книги есть презентации в репозитории. По ним удобно быстро просматривать информацию и повторять. Если Вы знаете основы Python, то стоит их пролистать.

Скачать все презентации в формате PDF можно в специальном репозитории

Форматы файлов книги

Книгу можно читать в нескольких форматах:

Они автоматически обновляются, поэтому всегда содержат одинаковую информацию.

Пожалуйста, не выкладывайте скачанные версии книги. Вместо этого просто давайте ссылку на книгу

Обновление книги

В сентябре 2017 года книга была переведена на Python 3.6. Она ещё может дополняться, а также будут исправляться ошибки и опечатки. Поэтому, если Вы не будете читать книгу в ближайшее время, то лучше сохраните ссылку на онлайн-версию книги, а не PDF/Mobi/ePub, а когда решите читать, скачайте свежую версию.

Подробнее об обновлениях можно почитать в Сhangelog книги

GitBook отображает, когда были сделаны последние изменения, поэтому легко можно определить, были ли изменения за последнее время.

gitbook_update.png