Рецензия на книгу
Простой Python

Билл Любанович

Обложка книги Простой Python (Билл Любанович)

Краткая рецензия

В книге содержится много практических примеров и рассматриваются популярные и часто используемые Python-библиотеки и инструментов. Для новичков может быть сложно, но отлично подойдет программистам с небольшим опытом в—Python, а также разработчикам на других языках (PHP, Java и т.д.).

Особенно будет полезна если вы хотите развиваться в области web-программирования.

Полная рецензия

Продолжаем поиск лучших книг по Питону и сегодня на обзоре труд Билла Любановича «Простой Python, современный стиль программирования».

В 2019 году на амазоне вышло второе издание этой книги, но на русском языке пока доступно только первое, датированное 2014 годом. Поэтому будем работать с тем, что есть.

Обложка второго издания книги

Обложка второго издания книги на английском.

Книга позиционирует себя как учебник плюс набор рецептов и утверждает, что она подходит для новичков без опыта программирования. Однако внимательно изучив чуть более 400 страниц я пришел к другим выводам.

Поэтому усаживайтесь поудобней и давайте разбираться что к чему.

Первая глава

Обучение программированию на Python обычно начинается с установки интерпретатора, нет смысла читать о крутых возможностях языка или сферах его применения. Это не приблизит вас к программированию ни на бит, а вот запуск первой программы — это уже какой-то прогресс.

И для запуска Python-скриптов сперва нужно установить интерпретатор. Информацию об установке автор вынес в приложения и, в целом, там всё более-менее понятно.

Возникают лишь сложности с запуском самого интерпретатора из командной строки. В книге не написано как это сделать, точнее нет информации о том, как запустить терминал в Linux и MacOS, или командную строку Windows. Автор подразумевает, что вы продвинутый пользователь и сами с этим справитесь.

Пусть будет так. Вы успешно установили Python, запустили терминал и интерактивный интерпретатор, открыли книгу и давайте посмотрим что-же вас ждет в первой главе?

А в ней автор приводит много довольно сложного кода: со словарями, списками, циклами врезками на C++, Java и PHP, а также пример подключения к YouTube по API.

Первый пример из книги

Пример кода из книги.

В приведенном примере кода используются: два модуля, декодирование, работа со списками и срезами, а также цикл. Для начинающего программиста данный фрагмент будет набором чего-то непонятного. Это всё равно что начать изучать иностранный язык с небольшого монолога. Учитель его произнесет, а потом скажет: «Только посмотрите какой красивый язык, кстати я только что показал пример как забронировать столик в ресторане по телефону. Прекрасный синтаксис и произношение.»

Это не самый удачный подход для вовлечения в изучение чего-либо. Правда Билл исправился и на следующей странице подробно расписал каждую строку, но при этом допустил несколько ошибок. Декодирование называл дешифровкой, перепутал номера строк, а срез назвал функцией slice. Не знаю проблемы ли это в переводе или сам Билл запутался, но срез — это точно не функция.

В целом, первая глава довольно сумбурная и малопонятная особенно для новичков. Поэтому рекомендовать книгу начинающим разработчикам я бы не стал.

Следующие главы

Но давайте посмотрим, что будет дальше, а дальше идет глава про числа, строки и переменные. Что вполне логично.

Каких-то откровений тут вы не найдете. Просто описание элементарных возможностей языка с небольшими примерами.

Тем не менее автор, или переводчик, продолжает начатую в первой главе стратегию неверного использования терминов. Он снова называет срезы функцией slice, а строковые методы функциями. Хотя понятие объекта автор уже ввел и логично бы ввести понятие метода, ведь метод — это как раз функция, связанная с объектом. Тем не менее Билл Любанович предпочитает называть split, join, replace именно функциями.т

На работоспособности программ это не сказывается, просто странная неточность в названиях. Сложно сказать с чем она связана. Возможно — это такой свободный, не академический стиль общения автора. Оператор, операция, метод, функция — какая разница. Программа работает и это главное.

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

Как работать с книгой

Вообще, лучшая стратегия чтения этой книги — это повторять за автором тот код, который он приводит. С одной стороны код довольно простой и вы сразу видите результат выполнения программы, с другой стороны сами примеры очень интересные.

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

Итак, как я сказал, лучшая стратегия изучения книги — это повторять код за автором. При этом у вас не должно возникнуть больших сложностей в его понимании.

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

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

Продолжаем обзор

Следующая глава посвящена составным структурам данных: спискам, словарям и т. д. Тут уже автор вводит понятие метода. При этом это определение он использует при демонстрации создания списка. И вот как раз такой синтаксис скорее похож на синтаксис вызова функции, а не метода.

Пример использования функции list

Пример использования функции list.

Конечно, list — это класс, и мы создаем объект. Но если уж и упрощать, то следует говорить, что мы вызываем функцию list, а не метод. Методы можно употреблять только в контексте работы с объектами, и они вызываются через точку.

Автор снова всё свалил в кучу. Но к этому мы уже привыкли.

При этом Билл Любанович охватывает очень большой объем тем, включая lambda-функции, генераторы, декораторы, исключения, модули, классы, объекты. То есть он проходится по всем ключевым особенностями языка. Разумеется, не так глубоко, как Марк Лутц, но в целом у вас сложится довольно полное понимание о возможностях Питона.

И чем дальше мы продвигаемся по книге, тем интересней становятся примеры. Так, в главе про классы, в качестве альтернативы простым классам или словарям предлагаются именованные кортежи. Если честно, я даже не знал, что такие существуют:

Именованные кортежи

Именованные кортежи.

Знакомство с популярными библиотеками

В целом, на общее знакомство с Python в книге отводится около 7 глав, а после идут более практические темы, которые включают описание встроенных и сторонних библиотек.

Так в 8 главе автор показывает примеры работы с CSV, XML, HTML и JSON файлами, а также учит работать с модулем pickle и подключаться к базам данных, как напрямую, так и с помощью SQLAlchemy.

В том числе Билл затрагивает NoSQL хранилища, включая семейство dbm, про которое я говорил в рецензии на книгу Марка Саммерфилда.

Еще в книге рассказывается о memcache и redis, не очень подробно, но достаточно, чтобы понять, как они работают и зачем нужны. При этом вы найдете много рабочих примеров кода на Python.

После идет глава о сетях, и автор говорит о модулях requests, flask, beautiful soup, а затем переключается на возможности sys, включая работу с каталогами, файлами, символическими ссылками и правами доступа. Всё что я перечислил — это не какие-то сферические инструменты, это реальные библиотеки, с которыми приходится работать постоянно. Особенно если вы веб-разработчик.

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

Последняя же глава называется «Быть питонщиком» и в ней кратко рассказывается о менеджерах пакетов, IDE, стиле кода и PEP8. А также о тестировании, отладке и оптимизации программ. Тут же дается список полезных сайтов и книг.

Среди рекомендаций, например, есть «Изучаем программирование на Python» Пола Бэрри, которую я также высоко оценил. Еще Билл приводит несколько продвинутых книг, включая литературу об анализе данных и создании сложных приложений.

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

Приложения

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

И в целом эта книга мне понравилась, даже с учетом путаницы в терминах в первых главах. Для совсем новичков, как я сказал, она может быть сложной. Я же вижу её полезной для двух категорий разработчиков:

Первая — это начинающие Python программисты, которые уже владеют синтаксисом и хотят быстро познакомиться со всей инфраструктурой, которая есть вокруг Питона: библиотекам, Фреймворками, сервисами. Особенно будет полезно если вы хотите развиваться в области web-разработки.

Вторая категория, это web-программисты на других языках, которые хотят быстро вникнуть в Python и посмотреть какие у него есть инструменты. Например, вы пишите на PHP, а сейчас хотите попробовать Питон и вам надо быстро понять, как реализовать на нем похожие по сложности проекты: как работать с базами данных, как настроить кэширование, как написать парсер сайтов или бэкенд.

Если вы относите себя к одной из этих категорий, то книга может быть полезна. Новичкам же лучше выбрать что-то другое: например, Тони Гэддиса или Майкла Доусона.