Добро пожаловать в курс среднего уровня по Python! В этом курсе вы узнаете многое о более продвинутых возможностях языка и лучших практиках их использования. Курс предназначен для людей, которые уже имеют некоторый опыт работы с Python и хотят улучшить свои знания и изучить более сложные темы.
К концу этого курса вы научитесь использовать классы и свободно работать с наследованием. Мы рассмотрим лучшие практики написания кода для крупных проектов и будем использовать типизацию, которая помогает статически анализировать код для обнаружения ошибок. Вы познакомитесь с декораторами и создадите собственные утилиты-декораторы, которые значительно сократят размер кода. Мы обсудим итераторы и итерируемые объекты вместе со стандартной библиотекой itertools. Для работы с файловой системой мы будем использовать glob и pathlib. И самое главное, мы научимся использовать async / await для оптимизации нашего кода при работе с большим объемом ввода/вывода, базами данных и сетевыми запросами.
💻 Обучение на практике
В этом курсе вы учитесь на практике! Каждая концепция сопровождается несколькими интерактивными задачами, которые вам необходимо решить, чтобы перейти к следующей. Мы считаем, что практическое обучение — лучший способ получить глубокие знания. Здесь вас ждут множество сложных и в то же время интересных упражнений для практики каждого рассмотренного понятия.
Вы будете обучаться в своем собственном темпе. Вы можете усердно заниматься и пройти несколько уровней за одну неделю, либо двигаться медленнее и уделять больше времени каждой концепции.
Есть форум для вопросов и поддержки. Вы можете задавать вопросы или отвечать на вопросы других под каждой задачей.
🎓 Учебная программа
Этот курс фокусируется на основных концепциях и некоторых продвинутых возможностях Python, представляя каждую из них интуитивно понятным способом. Чтобы сделать процесс более увлекательным, концепции организованы по уровням, и прохождение каждого уровня означает, что вы освоили новую тему. Вот основные темы, которые мы будем рассматривать:
Продвинутые функции
Только позиционные и только именованные аргументы
Рекурсия
Передача по значению VS передача по ссылке (изменяемые аргументы)
Регулярные выражения
Основы и применение регулярных выражений
Поиск и сопоставление
Классы
Определение классов
Установка и доступ к атрибутам
Конструктор __init__
Определение методов внутри классов
Магические методы
Публичные и приватные переменные
Наследование
Наследование от базового класса
Изменение функциональности путем переопределения метода
Расширение функциональности с помощью super()
Наследование от нескольких базовых классов
Инкапсуляция
Приватные переменные
Защищенные переменные
Как Python на самом деле обрабатывает приватные и защищенные переменные
Исключения
raise и except
Иерархия исключений
Создание собственных исключений
Модули
Работа с библиотеками
Модули в файловой системе
Инициализация модуля
Импортирование переменных, функций и классов
Файловая система
glob для работы с коллекциями файлов
pathlib для работы с конкретными файлами
Удаление файлов
Рекурсивное создание/удаление всего каталога
Продвинутые классы
Переменные класса VS переменные экземпляра
Встроенные декораторы (@dataclass, @property, @staticmethod и др.)
Абстрактные классы (модуль ABC)
Декораторы
Декораторы для функций
Декораторы для классов
Создание собственных декораторов
Типизация
Типизация для встроенных типов (int, list, dict и т.д.)
Типизация для собственных классов
Типизация внутри класса
Статический анализ — что мы можем достичь и каковы ограничения
Итераторы и итерируемые объекты
Итераторы
Генераторы
Итерируемые объекты
itertools — cycle(), repeat(), chain() и др.
Создание собственного генератора
Создание собственного итерируемого объекта
Контекстные менеджеры
Реализация собственного контекстного менеджера
Использование синтаксиса with
Контекстные менеджеры в качестве декораторов
Многопоточность и многопроцессность
Пакет threading
Создание собственного класса потока
Пакет multiprocessing
Обработка в пулах
Обмен данными между потоками и процессами
asyncio
Синтаксис async и await для функций
Работа с файлами
Работа с сетевыми запросами
Запросы через SQLAlchemy
asyncio vs потоки и процессы
Итоги и проекты
Несколько проектов под руководством, которые суммируют весь материал.
Это будет включать много поиска и самостоятельного обучения.
Вы автоматизируете некоторые задачи и познакомитесь с полезными библиотеками
🚀 Добро пожаловать
Обучение — это на 80% самостоятельная работа! Завершение этого курса будет вашим достижением, и мы здесь, чтобы поддержать вас на этом пути. Вы можете использовать раздел в конце каждого упражнения, чтобы задавать вопросы или помогать другим.