Продолжаем поиск лучшей книги о Python для новичков и сегодня на очереди «Изучаем Python» Эрика Мэтиза.
Победа в Edcrunch Award
Но перед тем, как я начну обзор, хочу поделиться с вами отличной новостью. В конце 2020 года наш курс по Питону победил в международном конкурсе Edcrunch Award в номинации программирование.
Edcrunch — это крупнейшая образовательная конференция, а Edcrunch Award престижная премия для авторов онлайн-курсов, и мы её получили. Второй раз подряд, в 2019 мы заняли первое место с курсом по основам SQL.
Концепция книги
Но даже если вы выбираете лучшие IT курсы, учитесь в престижном ВУЗе или работаете с наставником, для эффективного обучения вам всё равно нужна хорошая книга. И «Изучаем Python» Эрика Мэтиза именно такая. Давайте разбираться почему.
Итак, на обложке указано, что эта книга про программирование игр, визуализацию данных и создание веб-приложений. И в целом так оно и есть.
А еще на обложке указано, что книга разошлась тиражом в 500 000 экземпляров. Возьмите любую популярную книгу в вашем доме, пусть даже если это худлит и сравните тиражи. Уверен, что у вашей книги экземпляров на порядок, а то и два меньше. 500 000 — это очень много.
Особенно для книги о программировании. Хотя к слову 500 000 — это мировой тираж, России досталось лишь 2000, что является плюс минус стандартным значением для профессиональной литературы.
Но вернемся к «Изучаем Python». У меня в руках издание 2020 года, а оригинал вышел в 2019, что в общем-то круто. В прошлых обзорах были случаи, когда переиздавали издания восьмилетней давности, как например «Изучаем Python» Марка Лутца. А тут свежее издание.
И собственно так как книга новая, то вся работа в ней ведется с Python 3. Никакой второй версии. Всё. Хватит. Вторая версия идет на свалку истории.
При этом сама книга позиционирует себя как литература для повышения квалификации, а также для новичков, которые никогда не программировали на Python, да и вообще никогда не программировали. И именно с этой позиции я буду рассматривать данный труд.
Первая часть книги
Итак, первая глава «Изучаем Python» посвящена установке Питона и запуску "Hello world". И как только вы справитесь с этой простой задачей Эрик Метиз сразу переходит к переменным и простейшим типам данных: числам и строкам.
В процессе повествования Эрик Мэтиз приводит простые примеры с подробными комментариями и подсказками. Например он пишет про то, что имена переменным лучше давать короткие и содержательные, или о том, что нужно быть внимательными при использовании в названиях единиц, нулей, а также строчной l и заглавной O. Начертания этих символов похожи, поэтому может возникнуть путаница.
# Слова разные, но выглядт похожими
localOrder1 = 123
loca10rderl = 124
Еще Эрик Мэтиз приводит примеры потенциальных ошибок и как их избежать. Для новичка это полезно.
Далее, в этой же главе, автор вводит понятие метода на примере строк. А после, не теряя времени, рассказывает про f-строки. Заканчивается глава Дзэном Python — набором принципов написания хорошего кода.
Красивое лучше, чем уродливое! Простое лучше, чем сложное! Сложное лучше, чем запутанное и так далее.
Далее, в третьей главе автор переходит к спискам. И тут всё также четко и по делу, никакой воды. Кстати, оригинальное издательство No Starch Press, которое выпускает книгу, как раз специализируется на технической литературе с максимальной пользой и отдачей. И «Изучаем Python» вполне соответствует этой концепции.
Но вернемся к спискам, которые автор рассматривает не отдельно, а сразу вместе с циклом for, что расширяет ваши возможности в написании программ.
При этом цикл while, пока не затрагивается. И в целом получается интересное повествование — Эрик Мэтиз не берет какую-то отдельную тему с полным раскрытием, а работает
Но снова вернемся к спискам, в целом глава понятная, однако есть одна проблема, проблема перевода: срезы перевели как сегменты. Это плохо и плохо потому, что если вы занимаетесь только по этой книге и вам захочется получить чуть больше информации, то вы начнете гуглить что-то вроде «Сегменты в Python», но ничего не найдете. Потому что нужно гуглить «Срезы в Python». Казалось бы мелочь, но не приятно. Хотя теперь вы предупреждены и данная проблема уже не проблема.
После срезов, в конце главы, идут упражнения на закрепление. Задания довольно простые, даже не знаю стоит ли их вообще вводить в книгу. Устойчивые навыки вы вряд ли разовьете. Поэтому за практикой придется обратиться куда-то еще. Но это проблема почти всех книг по Python.
После списков идут условия, словари, цикл while, ему посвящена отдельная глава, функции и классы. А завершают первую часть книги главы про файлы, исключения и тестирование. При чем в качестве тестов Эрик Мэтиз использует Юнит Тесты, что круто.
Проекты
Итак, первая часть «Изучаем Python», которая посещена основам Python закончена и на данном этапе вы должны уже более-менее понимать из каких частей строится программа. Потому что дальше в книге идет создание и разбор трёх относительно небольших проектов: Игры на PyGame, визуализация данных с помощью matplotlib и создание сайтов на Django.
Игра на PyGame
И чтобы чуть больше погрузиться в контекст и особенности подачи материала, я с начала до конца прошел три главы про создание игр. Под прошел я имею в виду, что я внимательно всё прочитал и повторил за автором весь код, создав игру Инопланетное вторжение. После я её немного усовершенствовал и в итоге у меня получилась такая классическая игрушка, в которой космический корабль борется с летающими тарелками.
Результат вы увидели. Теперь поговорим о написании самой игры и для полноты картины я сделаю сравнение с книгой Майкла Доусона «Программируем на Python» в которой я также создавал игру. Про пиццу.
Самое первое и самое главное — это то, что у Доусона для удобства разработки мы использовали надстройку над PyGame и из-за этого я долго не мог вообще что-либо запустить. Мне пришлось гуглить и искать по форумам и это была большая проблема. Тут же всё работает на чистом PyGame и у меня вообще не возникло никаких трудностей. Получилось с первого раза. При этом я использовал PyGame 2.0 и python 3.8 в MacOS.
Единственное с чем возникли небольшие сложности — так это с тем, что в коде, который приводится в книге, есть опечатки. В нескольких местах пропущено слово self, а также неправильно записаны имена методов. Но эти мелочи лечатся за несколько секунд если вы внимательно читаете и в принципе понимаете как устроен и работает код.
Сама игра получилась довольно объемной: 9 модулей, более 700 строк кода, несколько файлов с изображениями и звуком. При этом автор снова использовал метод прогрессивного джипега, постоянно совершенствуя игру в разных направлениях. И по мере роста кода Эрик Мэтиз много внимания уделяет организации модулей, классов и рефакторингу.
То есть сперва мы пишем какой-то большой кусок программы, а затем разбиваем его на методы, классы и модули, чтобы процесс создания игры был более понятным и управляемым.
При этом все действия подробно комментируется с указанием номеров строк. Вообще система комментариев в книге мне очень понравилась, с ней удобно работать.
Также грамотно оформлены части кода, которые нужно расширить. Светло-серым цветом выделяется код, который у вас должен быть написан на текущий момент, а черным оформлен новый код. Это упрощает поиск нужной строки и вставку. Только важно всё повторять точь-в-точь за автором. В какой-то момент я решил немного изменить игру и понял, что дальше мне сложно следовать за книгой, так как мой код отличался от кода в книге.
Поэтому я вернулся назад и сперва закончил игру предложенную Эриком, а уже после добавлял в неё разные фишки. Кстати откатиться назад мне помогла система контроля версий. Автор рекомендует сразу поместить проект в git, что я и сделал. Хотя я бы это сделал и сам. Если вы не знаете что такое git, то в конце книги есть небольшая глава про него, буквально на 10 страничек. Справитесь без проблем.
Скачать мою версию игры вы можете с GitHub.
И в целом я очень доволен результатом и горячо рекомендую вам создать данную игру от начала до конца — это как минимум покажет как строятся более-менее крупные проекты, как работает ООП и наследование, а также как делать рефакторинг.
Конечно для более серьезных игр, PyGame и Python — не подходят, но как старт в программирование — это самое то.
Визуализация данных
Следующий проект, который предлагается выполнить — это визуализация и анализ данных с помощью Plotly и matplotlib. Я не стал подробно изучать эти главы, но в целом проект выглядит гораздо проще чем игра, хотя он дает познакомится с интересной и востребованной областью применения python — аналитикой данных.
Также вы научитесь работать с CSV и JSON-файлами с модулями datetime и requests для получения данных по API из интернета. То есть организационно проект казалось бы проще, но тем не менее он сильно расширяет ваш инструментарий библиотеками, которые реально используются на практике.
Создание сайта на Django
И наконец третий проект — это программирование сайта на Django. И начинается глава с создания виртуального окружения, что не просто логично, а прямо Must Have для любых проектов. Смотрите какое интересное повествование, в первом проекте мы используем git, а тут добавляем виртуальные окружения. Всё по-взрослому и это круто.
Единственное, в книге используется Django 2.2, а сейчас активна третья версия, однако мой опыт подсказывает, что проект без проблем запуститься и на Django 3 и возможно на Django 4, который выйдет в будущем. Я не увидел какого-то кода, который был бы специфичен для третьей версии фреймворка.
И наконец, в последней главе Эрик Мэтиз показывает как выложить проект в интернет. То есть мы создаем сайт с нуля до публикации в сети. Что очень круто.
Итоги
На этом книга заканчивается и разумеется я её горячо рекомендую. Особенно новичкам. Единственное тут не так подробно раскрыт сам Python и его возможности. Однако для начинающего программиста этого хватит.
На этом у меня всё.
Пока и успехов в учебе.