Книга Лучано Рамальо «Python. К вершинам мастерства»

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

Python — простой для изучения и мощный язык программирования… Поскольку язык так просто выучить и начать применять на деле, многие программисты используют лишь малую часть его обширных возможностей… Эта книга написана для практикующих программистов на Python, которые хотят усовершенствоваться в Python 3. Если вы уже знакомы с Python и хотели бы перейти на версию Python 3.4 или старше, эта книга для вас.

В этой книге действительно упор сделан на возможностях, которые появились в Python 3.x, особенно автор подчеркивает особенности, возникшие в версиях Python 3.3 и 3.4. В момент написания книги Python 3.5 еще не вышла, но было примерно понятно, что туда собираются включить, и Лучано Рамальо упоминает некоторые такие возможности. Хотя в книге упор сделан на Python 3, но многие описанные вещи применимы и к Python 2.x, при этом подчеркивается, где есть различия в поведении интерпретатора Python 2.x и 3.x.

Большая часть книги в той или иной мере посвящена объектам в Python, тому, как интерпретатор их создает, что происходит при вызове методов вида __xxx__ и многое другое. Хотя местами описывается достаточно низкоуровневая логика, но до байт-кода автор доходит всего один или два раза.

Рамальо очень подробно и методично описывает работу итераторов и генераторов, на компактных наглядных примерах ставит такие эксперименты над языком и интерпретатором, которые показывают, что происходит «под капотом» в той или иной ситуации. За примеры автору отдельное спасибо, они подобраны очень хорошо, большинство из них достаточно короткие и легко читаются, а длинные листинги, которые не влияют на понимание описываемой темы, вынесены в приложения, благодаря чему книга легко читается (не люблю читать длинные листинги кода в книгах).

Перечислю еще некоторые темы, о которых говорится в этой книге. Я уже упоминал итераторы и генераторы, при этом автор подробно описывает языковую конструкцию yield, а затем и yield from, появившуюся сравнительно недавно.

Достаточно много внимания уделено coroutines, которые в книге перевели как «сопрограммы», а отдельная глава посвящена довольно новой стандартной библиотеке asyncio, а также тому, как работает GIL, и почему асинхронные операции дают заметный выигрыш по скорости при операциях ввода-вывода, но не в тех задачах, где требуются сложные расчеты.

Пожалуй, темы, связанные с yield from, сопрограммами и asyncio — это самые тяжелые темы, описываемые в книге. Все-таки они заставляют смотреть на программирование несколько под другим углом — не так кардинально другим, как функциональное программирование, но все же.

Несколько глав посвящены метапрограммированию, т.е. тому, как создаются объекты в Python, и как программист может на этот процесс влиять. Основные примеры в этих главах посвящены тому, как можно динамически добавлять атрибуты и свойства в классы, да еще, чтобы при этом они обладали какими-нибудь свойствами. В этих главах рассказывается о том, что такое дескрипторы, как устроены свойства (properties) классов, и как мы можем сами делать подобные объекты внутри класса. И заканчивается книга главой, посвященной метаклассам и предупреждением о том, что это тот очень мощный инструмент, который надо использовать лишь в крайнем случае, хотя он по сути и не такой сложный.

Кроме того, в книге рассматриваются такие темы как декораторы, замыкания, оператор nonlocal, слоты (__slots__), различие между строками и байтовыми последовательностями (в этой книге есть отличная глава, посвященная Unicode), как устроены различные коллекции и про их абстрактные базовые классы, отдельная глава посвящена изменяемым и неизменяемым объектам, глубокому и поверхностному копированию, сравнению объектов.

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

Итого. Книга эта отличная, читать ее программистам на Python нужно обязательно. Кроме того, в книге приводится огромное количество ссылок на другие книги, блогозаписи, статьи и выступления, которые очень желательно почитать, посмотреть или послушать. Технические книги я обычно читаю с ручкой в руках, и в этом плане книге Лучано Рамальо не повезло — в ней осталось не так много страниц без моих каракуль и подчеркиваний интересных моментов, на которые надо обратить внимание.

 

PS. Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.

Пожалуйста, оцените запись

УжасноПлохоТак себеХорошоОтлично (Количество голосов: 13, средняя оценка: 4,31)
Загрузка...

комментария 3

  1. evgeny:

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

  2. Jenyay:

    У меня книга сейчас тоже находидится в стадии осмысления — делаю конспект из подчеркнутых моментов.

  3. Pandorin:

    Шикарная книга, читаешь и хочется проверять, исследовать, понимать!

Leave a comment

Subscribe without commenting