F.PyAdv

Python расширенные возможности

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

Предварительная подготовка:
Базовое представление о языке Python. Умение работать со списками, кортежами, словарями и т.д. Умение писать собственные программы с использованием циклов и ветвлений, импортировать модули и вызывать функции, а так же писать собственные функции. записывать информацию в файл и извлекать ее.
24 000₽

Длительность

2 дня (16ч в неделю)

Доступ к курсу

Навсегда в личном кабинете

Документы

Удостоверение о повышении квалификации

Расписание

Дата и место проведения
Начало
Формат
Преподаватель
Стоимость

Кому подойдет этот курс

    Разработчики
    Программисты
    Администраторы
    Архитекторы

Получаемые знания:

• Понимание функционального и объектно-ориентированного подхода в Python;
• Навыки работы с декораторами;
• Умение писать собственные классы;
• Понимание особенностей наследование в Python;
• Понимание основных принципов  ООП (инкапсуляция, наследование и полиморфизм);
• Навыки работы с методами класса и статическими методами в Python;
• Навыки работы с конструкторами и деконструкторами классов;
• Навыки работы с абстрактными классами ;
• Умение работать со свойствами и Dunder-методами;
• Понимание сложности алгоритмов и их «накладных расходов» ;
• Понимание организации и уборки мусора в Python и создания ссылок на объекты.

Программа курса

20 модулей
Функциональный и объектно-ориентированный подход в Python

Сравнение парадигм программирования;

Функции как объекты первого класса;

Принципы ООП: абстракция, инкапсуляция, наследование, полиморфизм;

Когда использовать функциональный, а когда объектно-ориентированный подход;



Видимость переменных

Области видимости: локальная, охватывающая, глобальная, встроенная (LEGB);

Ключевые слова global и nonlocal;

Замыкания и сохранение состояния;

Влияние областей видимости на работу функций и классов;



Декораторы

Концепция декораторов как обёрток функций;

Создание декораторов с аргументами и без;

Декорирование с сохранением метаданных: functools.wraps;

Стекирование нескольких декораторов;

Практические примеры: логирование, кеширование, контроль доступа;



Классы

Определение класса: синтаксис и соглашения;

Атрибуты класса и экземпляра;

Методы класса: обычные, классовые, статические;

Инициализатор __init__;Строковое представление: __str__ и __repr__;



Объекты

Создание экземпляров класса;

Атрибуты экземпляра и их жизненный цикл;

Динамическое добавление атрибутов;

Метод __dict__ и интроспекция объектов;

Сравнение объектов: is и ==;



Наследование

Создание дочерних классов;

Вызов методов родителя: super();

Множественное наследование и порядок разрешения методов (MRO);

Переопределение методов;

Принцип подстановки Лисков;



Полиморфизм

Полиморфизм через переопределение методов;

Утиная типизация (duck typing) в Python;

Полиморфизм через общий интерфейс;

Протоколы и абстрактные базовые классы;

Практические примеры использования;



Инкапсуляция

Публичные, защищённые и приватные атрибуты;

Соглашения об именовании: _ и __;Механизм name mangling;

Использование property для контроля доступа;

Принцип сокрытия реализации;



Конструкторы

Метод __init__ и инициализация объекта;

Метод __new__ и создание экземпляра;

Конструкторы с параметрами по умолчанию;

Паттерн фабричного метода через classmethod;

Цепочка вызовов конструкторов при наследовании;



Деструкторы

Метод __del__ и его назначение;

Жизненный цикл объекта в Python;

Подсчёт ссылок и сборщик мусора;

Контекстные менеджеры как альтернатива деструкторам;

Практические ограничения использования __del__;



Методы классов

Обычные методы: работа с self;

Методы класса @classmethod: работа с cls;

Альтернативные конструкторы через @classmethod;

Различия между методами экземпляра и класса;

Паттерны использования в реальных проектах;



Атрибуты классов

Атрибуты класса и атрибуты экземпляра: различия;

Общие данные для всех экземпляров;

Изменяемые атрибуты класса: подводные камни;

Использование __slots__ для оптимизации памяти;

Дескрипторы данных и не-данных;



@staticmethod, @classmethod

Декоратор @staticmethod: методы без доступа к экземпляру и классу;

Декоратор @classmethod: методы с доступом к классу;

Сравнение static, class и обычных методов;

Критерии выбора типа метода;

Примеры использования в библиотеках Python;



Абстрагирование

Модуль abc: абстрактные базовые классы;

Декоратор @abstractmethod;Создание интерфейсов через ABC;

Запрет на создание экземпляров абстрактных классов;

Проектирование иерархий с использованием абстракции;



Свойства

Декоратор @property: геттеры;

Сеттеры и удалители через @property;

Вычисляемые свойства;

Валидация данных через свойства;

Property как альтернатива прямому доступу к атрибутам;



Dunder-методы

Обзор магических методов Python;

Арифметические операторы: __add__, __mul__, __sub__;

Операторы сравнения: __eq__, __lt__, __gt__;

Контейнерные методы: __len__, __getitem__, __contains__;

Контекстные менеджеры: __enter__, __exit__;



Метаклассы

Концепция метакласса: класс классов;

Функция type как метакласс по умолчанию;

Создание пользовательских метаклассов;

Метод __init_subclass__;

Практические применения: ORM, валидация, регистрация;



Понятие о структурах данных и их алгоритмах

Массивы, связные списки, стеки, очереди;

Деревья и графы: основные понятия;

Хеш-таблицы и их реализация в Python;

Алгоритмы поиска: линейный и бинарный;

Алгоритмы сортировки: пузырьковая, быстрая, сортировка слиянием;



Сложность алгоритмов

Нотация Big O: определение и примеры;

Временная и пространственная сложность;

O(1), O(n), O(log n), O(n^2): характеристики;

Анализ сложности встроенных операций Python;

Выбор структуры данных на основе сложности операций;



Уборка мусора в Python

Механизм подсчёта ссылок (reference counting);

Циклический сборщик мусора (gc);

Поколения объектов: generation 0, 1, 2;Модуль gc: управление сборкой мусора;

Слабые ссылки: модуль weakref;

Утечки памяти и способы их обнаружения;



Как проходит обучение на платформе ФОРС

[ 01 ]

Знакомство с платформой

Платформа учебного центра ФОРС предназначена для удобного и комфортного обучения. Доступ к материалам будет открыт сразу после приобретения курса, а также навсегда доступен в личном кабинете.

[ 02 ]

Обучение

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

[ 03 ]

Обратная связь и поддержка

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

[ 04 ]

Дипломы и сертификаты

Все документы об окончании курсов собраны в одном месте в электронном формате — вы всегда можете посмотретьи скачать их в личном кабинете.

Остались вопросы?

Оставьте свои контактные данные — мы с вами свяжемся и все расскажем

Нажимая на кнопку «Отправить», я принимаю условия Политики конфиденциальности, и даю согласие на обработку персональных данных

WhatsApp
Telegram