Продолжаем поиск лучшую книги по Python для ноавичков. И сегодня на обзоре «Программирование на Python в примерах и задачах» Васильева А. Н.
Пару лет назад я уже делал обзор книги этого автора, тогда это была «Python на примерах» — и она мне понравилась. Среди российских авторов Васильев занимает у меня топ.
Единственное, прошлая книга не включала глав про файлы и была слишком математической, что несколько усложняло её текст. А также в ней были проблемы с чистотой кода.
И давайте посмотрим, исправлены ли эти недочеты в новом книге. А также чем эти книги отличаются друг от друга. К тому же между ними три года разницы, 180 дополнительных страниц, другое издание и как нас заверяет обложка — мы держим в руках российский компьютерный бестселлер.
И если верить содержанию — это две разные книги. Причем новая начинается несколько проще, и это гораздо лучше для начинающих программистов.
Первая глава
Также Алексей приводит установку Python 3.7, а значит у нас есть надежда встретить тут f-строки и, в целом, получить более современный взгляд на язык. Хотя, когда я делал обзор на «Python. Полное руководство» Кольцова, то выяснил, что в начале автор устанавливает Python 3.9, но далее по книге использует чуть ли не вторую версию языка.
Но в данном случае Алексей Васильев заморочился и везде использует Python 3.7, включая примеры установки разных IDE. И в целом знакомство в Питоном тут проходит неплохо. Автор хорошо объясняет и приводит классные примеры.
Единственное для оформления кода в книге выбран какой-то странный моноширинный шрифт. Я бы сказал не эстетичный. Буквы узкие и текст получается каким-то сжатым. Плюс отсутствие отступов для отбивки операторов перекочевало и в эту книгу, что еще сильнее напрягает глаза.
А еще автор зачем-то знакомит нас с функцией eval(). И ладно просто знакомит, но Алексей Васильев не предупреждает, что это опасная функция, которую не принято использовать в реальных программах как раз из-за её небезопасности. Но оставим это на совести автора и вернемся к первой главе, в которой, кстати Алексей вводит понятие списка и приводит много несложных примеров его использования. И я не уверен, что списки нужно давать так рано.
Также, в первой главе, вводится понятие генератора списка, цикла for, а после и условие, за которым следует цикл while. В конце главы нас знакомят и функциями. И знаете повествование тут идет очень плотно. Уже в начале книги вы познакомитесь не только с "Hello world", но и узнаете более продвинутые концепции программирования.
Чтобы во всём этом разобраться, вам придется внимательно прочитать всё что пишет автор, выполнить весь код, который он приводит, а затем еще раз всё перечитать. Особенно если вы новичок. Тут не забалуешь.
Если у вас есть хоть какой-то небольшой опыт программирования, то тогда первая глава вам дастся гораздо проще.
Погружение в Python
Со второй главы автор начинает глубже раскрывать каждую, ранее рассмотренную тему. Сперва происходит погружение в циклы. В целом примеры хорошие и более простые чем в предыдущей книге, но они довольно скучные. Без изюминки.
При этом отступы в выражениях заставили меня всплакнуть:
Не знаю в какой программе Алексей набирал и тестировал код, но, когда я набрал его в PyCharm, он мне подчеркнул все проблемные места и просто нажав Code-Reformat — Code можно было получить красивую и элегантную программу.
Далее, всё также во второй главе, мы знакомимся с условиями и знаете, я понимаю, почему был выбран такой шрифт и убраны отступы. С ними бы строка ниже просто не влезла бы на страницу:
Но её всегда можно было бы оформить в две строчки, что вообще-то не проблема.
Далее автор приводит программу, в которой снова использует функцию eval() для оценки того, что вводит пользователь. И опять же нигде не предупреждает, что это очень опасная конструкция. Так как пользователь может ввести что угодно в вашу программу и если она запущена с расширенными правами, то одна эта строка может на нет свести любые усилия по безопасности.
Так что будьте аккуратны. Я понимаю, зачем Алексей использует eval(), с помощью неё очень удобно объяснить некоторые концепции, которые он приводит далее, в том числе обработку исключений, но опять же, будьте аккуратны с таким кодом. Особенно если им будет пользоваться кто-то кроме вас, особенно на вашем компьютере.
Далее автор переходит к спискам и кортежам и, собственно, там нечего особенно отметить. Просто разные примеры кода. Какие-то проще, какие-то сложнее. Повозиться с ними вам в любом случае придется.
После мы подбираемся к словарям, и я решил проверить какую версию Питон автор использует в примерах. Так как на словарях сразу будет видно, это Python 3.7 или более ранние версии.
И да, здесь автор действительно использует тот питон, который он установил в начале.
После Алексей Васильев переходит на работу со строками и в том числе рассматривает f-строки, а также разные варианты форматирования и методы строк.
Более глубокое погружение
Затем в книге идет информация о функциях, включая лямбда и декораторы и это делает книгу довольно глубокой с точки зрения Python.
Далее мы переходим к работе с файлами, чего не хватало в предыдущей книге. Также в этой главе помимо файлов затрагиваются темы побитовых операций и работа с датой.
В общем неплохо, но автор совсем ничего не рассказал про кодировки файлов, а с этим могут возникнуть проблемы, особенно если вы работаете в Windows. В винде, вообще, лучше всегда явно указывать кодировку файла, потому что там всё сильно завязано на системную кодировку.
Далее автор переходит к классам и ООП и посвящает им 130 страниц, это довольно много. 20% от всей книги.
После мы переходим к исключениям и потокам и уделяем им еще 60 страниц, что опять же вполне серьезно. Как и по выбору тем, так и по объему.
Последняя глава книги посвящена программам с графическим интерфейсом на базе ткинтер.
Выводы
И в целом от книги у меня двоякое впечатление. С одной стороны, она хорошая, Васильев понятно доносит свою мысль, приводит много примеров, довольно глубоко погружается в тему. При этом сама книга получилась гораздо проще, чем его предыдущая, что позволяет учиться по ней новичкам.
Единственно в некоторых моментах вам скорее всего понадобится почитать что-то еще: статьи или может посмотреть видео на YouTube. Но это относится вообще к любому обучению.
А еще тут не помешало бы поправить стиль кода и выбрать более удачный шрифт для примеров. Также можно уйти от имен вида a, b, c и значений 1, 2, 3 к более приближенным к реальным. Ведь интересней сортировать не список из букв, а например список покупок, в котором находятся реальные продукты.
Также если добавить к примерам выноски, как это делают в No Starch Press, то книга может конкурировать с лучшими из лучших. Сейчас же я её помещу в мой рейтинг примерно в конец рекомендованной литературы. То есть да, я её рекомендую несмотря на все недочеты, но в целом есть книги получше.