Продолжаем обзор книг по питону и сегодня у меня в руках «Python — исчерпывающее руководство» Дэвида Бизли.
Давайте сразу посмотрим на обратную строну обложки и всё, что тут написано выглядит очень вкусно. Если вы новичок в Python, то мало что здесь поймете.
Тем не менее вы можете сказать что-то вроде: «Фундаментальные средства Python — то, что надо», «Невероятная мощь генераторов, звучит как минимум круто», «Эффективные операции с данными и анализ задач — да, я точно стану отличным Python разработчиком, надо брать!»
Однако самое главное, что вы скорее всего пропустите или не придадите вниманию — это надпись на лицевой стороне — »Для практикующих программистов». И это самое важное, что нужно знать про эту книгу.
Она не для новичков, она для реальных разработчиков, которые пишут python-код в данный момент и которые хотят стать круче. Начинающим программистам данная «Python — Исчерпывающее руководство» будет непонятна и сложна.
И уже в первой главе Дэвид Бизли приводит примеры циклов, условий, методов, менеджеров контекста, списков, словарей, множеств, функций, исключений, объектов, модулей, классов, пакетов, а также использует моржовый оператор. То есть уже к 56 странице мы познакомились со всеми синтаксическими конструкциями языка. В «Python для чайников» мы первую программу написали только после сотой страницы, а тут уже в первой главе приводится более 100 примеров с использованием всего арсенала языка.
Изначально я подумал, что данная книга похожа на «Python. Экспресс-курс» Наоми Седдер, «Python 3. Самое необходимое» Дронова и Прохоренка или «Простой Python» Билла Любановича.
В этих книгах авторы старались показать как можно больше примеров рабочего кода для решения самых разных задач. Чем больше кусочков кода, а также разнообразней и полезней решаемые задачи, тем лучше.
И полезность задач распространялась далеко за пределы Python. Это могли быть и примеры работы с базами данных, и обработка excel-файлов, и получение информации с помощью сетевых протоколов.
Тут же всё немного по-другому, да автор приводит много примеров, но практически все они сконцентрированы в области возможностей самого Python.
Поэтому «Исчерпывающее руководство» логичней сравнить с «Чистым Python» Дэна Бейдера или даже с «Изучаем Python» Марка Лутца. Если выбросить из Лутца всё лишнее и ужать два тома до какой-то краткой выжимки, то мы получим что-то вроде Исчерпывающего руководства Дэвида Бизли.
Собственно, даже по-английски книга называется Python Distilled — дистиллированный Питон. А дистиллированный — это значит очищенный, от всяких примесей.
Но, давайте посмотрим, что нас ждет после первой главы.
Краткое содержание книги
И вторая глава посвящена операторам, выражениям и обработке данных. В ней вы найдете всякие нетривиальные шаблоны распаковки сложных структур данных, операции над множествами, генераторы и списковые включения. Это такой уровень уверенного Python разработчика.
В третьей главе, посвященной управлению потоком выполнения программы вы, разумеется, поближе познакомитесь с условиями и циклами, включая вот такую распаковку внутри for:
И если честно я никогда не пользовался такой конструкцией и в первую очередь потому что даже не видел, что так можно, хотя в целом мог бы и догадаться.
Тут же вы близко познакомитесь с исключениями, включая иерархию исключений, написание собственных, а также генерацию цепочки исключений.
Мы такие штуки у себя на сайте перехватываем и это та еще головная боль.
4 глава посвящена объектам, типам данных и протоколам. Именно тут вы познакомитесь с дробями, массивами из библиотеки NumPy, а также типом Decimal. Причем именно познакомитесь, без какого сложного погружения. Вот вам один пример с дробями, вот один пример с массивом, нужно больше — вперед в документацию.
Далее вы еще сильнее углубитесь в менеджеры контекста, а также в логирование и отладку программ. Эти темы тоже не для новичков.
Также в этой главе приводится список магических методов, с помощью которых можно создать классы для чего угодно.
В 5 главе вы расширите свое понимание работы функций, включая аннотации, рекурсию, лямда-функции, колбэки, декораторы, а также элементы функционального программирования: map, reduce и всё такое. И объяснений здесь также минимум: описание, несколько примеров, дальше сами.
Тут же вы познакомитесь с асинхронным запуском функций. Если не знаете, что такое, то вот ссылка на наши уроки про асинхронное программирование на Python. Там самая база.
Далее мы переходим к созданию генераторов, а после к классам и объектно-ориентированному программированию.
Я посмотрел несколько примеров, почитал к ним описание и мне понравилось. Всё лаконично и без воды, автор явно разбирается в том, что пишет, то есть в Python. В Исчерпвающем руководстве много интересных ходов, полезных примеров, а также есть пища для размышлений.
В частности, при работе с классами автор показывает довольно хитрый код по созданию примесей на Python, рассказывает о декораторах классов, а также знакомит нас со слабыми ссылками, модулем weakref и сокращением затрат памяти через слоты.
Повторюсь, что новичку это всё вообще не нужно, но если вы метите на мидла или даже сеньора, то такие вещи знать обязательно. На собесе можно на них легко нарваться.
8 глава посвящена модулям и пакетам, а девятую (последнюю) можно разбить на две части. Первая про работу с файлами, а затем идет описание модулей из стандартной библиотеки Python. Некоторым модулям посвящено всего по полстранички, но пробежаться по ним будет полезно.
Итоги
Что ж, настало время выводов и данная книга мне понравилась. Она не тривиальная и достаточно глубокая. Если вы хотите развиваться именно как Python разработчик, то я рекомендую её прочесть. Она мне понравилась даже больше, чем Чистый Python Дэна Бэйдера. В целом они чем-то похожи, но Дэвид Бизли несколько глубже. Впрочем, я рекомендую прочитать обе этих книги, они хорошо друг друга дополняют и для решения одних и тех же задач нередко используют разные подходы.
Кстати, обе эти книги издательства Питер, и для тех моих дорогих зрителей, кто хочет купить книги на сайте издательства, у меня есть промокод на скидку, оставлю его под видео.
На этом у меня всё, пока и успехов в учебе!