Давайте представим, что вы хотите научиться готовить роллы с лососем. Как проще всего это можно осуществить? Всё зависит от того, насколько вы сильны в кулинарии. Если вы время от времени готовите разнообразные блюда, хорошо ориентируетесь на кухне и без особого труда находите нужные продукты как в магазине, так и в собственном холодильнике, то вам хватило бы рецепта с описанием ингредиентов и базовой последовательности действий. Если же ваши кулинарные познания, как у меня, например, ограничиваются методикой приготовления бутербродов, то вам понадобятся самые подробные инструкции. Или, ещё лучше — полноценный курс, объясняющий основные принципы приготовления пищи. Хотя бы рассказывающий, как правильно отварить рис и нарезать рыбу.
С программированием всё точно так же. Для новичков издаются многочисленные учебники различной степени подробности. Для профессионалов, которые уже владеют языком программирования, публикуются книги, в которых авторы не тратят время на изложение азов, зато подробно объясняют различные сложные моменты и методики. Пожалуй, в языке Python такое разделение заметнее всего. Ведь это язык со множеством слоёв. Начать программировать можно на самом верхнем слое, ознакомившись с основным синтаксисом. Но Python тем и интересен, что можно постепенно приближаться к совершенству, постигая всё новые уровни мастерства.
На начальном уровне вы пишете несложные циклы for по-обычному: в несколько строк. Но постепенно погружаясь в этот замечательный язык, вы познаёте истину: for можно записать в одну строку. На одном из уровней вы узнаёте, зачем нужны инструкция yield и генераторы. На другом знакомитесь с декораторами и лямбда-функциями. Именно таким уровням и посвящена книга «Чистый Python» Дэна Бейдера.
На обложке книги не зря помещён подзаголовок «Тонкости программирования для профи». Интересно, что в оригинале она называется: «Python Tricks: The Book». В этой книге вы не найдёте азов программирования на Python. Зато в ней есть множество простых ответов на сложные вопросы.
Как правильно использовать «ассерты»? Что, в конце концов, означают эти подчёркивания и почему иногда их два, а иногда одно? Как эффективно организовать стеки и очереди? Даже те, кто не первый год программирует на Python, не всегда могут дать чёткие однозначные ответы на эти и другие подобные вопросы. Но эти знания очень важны для любого разработчика: не для того, чтобы давать правильные ответы на очередном собеседовании, а для того, чтобы писать красивый, понятный и эффективный код. Ведь Python — это очень изящный язык программирования. И для того, чтобы целиком использовать все его богатые возможности, нужно хорошо понимать именно те тонкости, которым посвящена книга «Чистый Python».
Для информации кратко перечислю, чему посвящены главы книги. Первая глава называется «Введение». В ней, как и полагается, рассказывается о содержании книги, инструментах и особенностях подачи информации.
Вторая глава посвящена шаблонам чистого Python. Под этим универсальным названием собрана информация об «ассертах», менеджере контекста и инструкции with, «дандерах», классическом и современном способе форматирования строковых значений. Ну и, конечно, рассказано о «Дзене Python» — куда же без него?
Третья глава целиком посвящена работе с функциями. Тут есть разделы и про лямбда-функции, и про декораторы, и про особенности наборов аргументов *args и *kwargs.
В четвёртой главе речь идёт о классах и вообще об ООП в Python. Сравнение объектов, преобразование строк, абстрактные классы, именованные кортежи, различие между методами класса и методами экземпляров — в этой главе много полезной информации. Для иллюстрации общего тона и стиля книги приведу название одного из подразделов: «Клонирование объектов для дела и для веселья».
В пятой главе автор последовательно переходит к структурам данных. Начинается она с риторического вопроса: «Что должен применять на практике и что должен твёрдо знать каждый разработчик Python?». Ответ дан чётко и однозначно: «Структуры данных». В этой главе разбираются словари, массивоподобные структуры данных, множества, стеки и очереди. В общем, она представляет собой мини-учебник по всем основополагающим структурам данных Python.
Шестая глава — про циклы и итерации. Питоновский стиль написания циклов, нарезки списков, итераторы, генераторы всех мастей и форм... Полный набор инструментов для «питонирования» красивого и стильного кода. Как пишет сам автор, «вы обнаружите массу практических советов и шаблонов проектирования, которые сделают вас более эффективным и квалифицированным программистом на Python».
В седьмой главе автор возвращается к словарям. Всё-таки они, как ни крути, самая главная структура данных. Но далеко не все разработчики полностью используют богатейшие возможности словарей Python. Глава под названием «Трюки со словарём» позволяет закрыть этот досадный пробел. Например, там подробно рассказывается о различных способах сортировки и объединения словарей.
И, наконец, восьмая глава посвящена питоновским методам повышения производительности. Один из рецензентов книги в предисловии написал, что эта глава «представляет собой ещё один великолепный ресурс. Она охватывает аспекты, лежащие за пределами языка программирования Python, а также содержит советы о том, как отлаживать свои программы, как управлять библиотеками, от которых они зависят, и даёт вам возможность заглянуть внутрь байткода Python».
Оглавление книги
Ключевой особенностью книги является то, что она основана на идиомах — коротких фрагментах исходного кода Python, используемых как инструмент обучения. Пожалуй, это лучший формат для самообразования опытных программистов. Это не простейшие структуры из справочника или учебника для начинающих, но и не сложные полноценные программы, которыми изобилуют многие книги по Python. Это маленькие работоспособные фрагменты кода, которые похожи на изящные виньетки или миниатюры. Иногда достаточно прочитать эти фрагменты и посмотреть результат их работы, чтобы уловить суть всего содержания раздела. Автор сам признаётся, что книга начиналась как серия скриншотов с фрагментами кода, публиковавшихся в одной из социальных сетей. По-моему, такого рода примеры — это идеальный вариант для изучения тонкостей языка.
Для кого эта книга? Точно не для начинающих — это не учебник. Скорее, для профессионалов, но и не для гуру. Если вы уже программируете на Python, но всё ещё чувствуете себя неуверенно в чисто питоновских концепциях, то эта книга для вас. Особенно если до этого вы писали приложения на каком-то другом языке программирования. Книга «Чистый Python» позволит вам существенно продвинуться на пути к цели — постижению дзена Python. Ваш код станет чище, красивее и понятнее. А ещё — гораздо более эффективным, ведь дзен — это не только про красоту, но и про использование всех возможностей этого прекрасного языка. И даже только ради этого книгу «Чистый Python» стоит прочитать.
masai
Эх…
А какие, кстати, хорошие книжки для «гуру» есть?
sergey-gornostaev
По самому языку самое глубокое - "Fluent Python" Ромальо и официальная документация. По внутреннему устройству CPython есть "Inside The Python Virtual Machine" Obi Ike-Nwosu.
masai
Ну вот забыл добавить, что кроме Fluent Python. :) Его я и сам всем рекомендую.
Книжку про внутреннее устройстве не читал, разбирался по исходникам. Надо будет глянуть.
architux
Очевидно, "Fluent Python" Лусиану Рамальо, в русскоязычном переводе - "Python - К вершинам мастерства". Недавно как раз вышло обновлённое второе издание, из удобств, кроме прочего - в твёрдом переплёте, в отличие от первого издания.
architux
masai
Видимо, только русское в твёрдом.
masai
Книжка прекрасная, но хотелось бы ещё чего-то. С другой стороны, если есть достаточно продолжительный опыт разработки на Python, то книжки по языку уже не так нужны, а те, что нужны, к языку не то, чтобы привязаны.