4.4. Чему вы научились

В этой главе вы разобрались с приёмами, которые делают функции в Python ещё более гибким и выразительным инструментом. Узнали, как описывать алгоритмы через рекурсию, научились избегать избыточных вычислений с помощью кеширования и увидели, как декораторы позволяют добавлять к функциям дополнительное поведение — без изменения их кода. Кроме того, вы познакомились с генераторами и освоили технику «ленивых» вычислений, когда значения создаются только по мере необходимости.

Теперь вы умеете:

  • создавать рекурсивные функции и применять их для задач, где решение строится через обращение к самому себе;
  • отличать императивный и декларативный стиль программирования и понимать, какой из них лучше подходит в каждом конкретном случае;
  • использовать кеширование для ускорения работы рекурсий: как вручную через словарь, так и автоматически с помощью @lru_cache;
  • писать собственные декораторы и применять их для расширения функциональности других функций — универсально, через *args и **kwargs;
  • описывать функции-генераторы, использовать yield и работать с данными по частям, не загружая всю коллекцию в память.

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

В следующей главе вас ждёт новый уровень организации кода — объектно-ориентированное программирование. Мы обсудим, как устроены классы и объекты в Python, зачем нужны инкапсуляция и наследование и как описывать сложные сущности и их поведение с помощью методов, полей и магических функций.

Перейти к следующей главе

Чтобы добавить в заметки выделенный текст, нажмите Ctrl + E
Предыдущий параграф4.3. Рекурсия. Декораторы. Генераторы

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

Следующий параграф5.1. Объектная модель Python. Классы, поля и методы

В этом параграфе вы сделаете первый шаг к объектно-ориентированному программированию — подходу, который лежит в основе современных языков разработки, включая Python. Вы узнаете, что такое классы и объекты, как создавать собственные типы данных и описывать поведение объектов с помощью методов. Мы разберёмся с ключевыми понятиями ООП — атрибутами, инкапсуляцией и полиморфизмом — и увидим, как они помогают писать более структурированный, гибкий и масштабируемый код. На простом примере — модели автомобиля — вы научитесь создавать классы, задавать свойства объектов, реализовывать действия и проектировать интерфейс взаимодействия с объектами. Этот параграф станет основой для понимания более сложных концепций ООП, с которыми вы познакомитесь в следующих частях главы.