Python Fundamentals
Интерактивный курс по основам Python: синтаксис, типы данных, строки, коллекции, функции, файлы, исключения, ООП, регулярные выражения и работа с базами данных. Разработка идёт по одному уроку за итерацию.
Что нужно знать заранее
- Специальная подготовка не требуется.
- Нужны Python 3.x, VS Code или другой редактор, терминал.
- Код в уроках пишется на английском, объяснения — на русском.
Старт курса
Урок 01 — Основы работы с Python
Особенности Python, интерпретатор и компилятор, переменные, присваивание, имена, синтаксис, комментарии, PEP 8, print() и input().
Урок 02 — Базовые типы данных, работа с функциями
Типы данных и объекты, динамическая типизация, int/float/str/bool/None, возвращаемое значение, type(), строки, кавычки, escape-последовательности, sep и end.
Урок 03 — Summary session 1
Повторение первых двух уроков: Python, переменные, синтаксис, print/input, типы данных, строки, sep/end, контрольные вопросы и практическая работа.
Урок 04 — Арифметические операторы, выражения
Числа, арифметические операции, ZeroDivisionError, приоритет операций, неизменяемость, составные присваивания, множественное присваивание и преобразование типов.
Урок 05 — Практикум 1
Девять практических задач на ввод/вывод, строки, кавычки, арифметику, преобразование типов, время, стоимость поездки и работу с цифрами числа.
Урок 06 — Логический тип данных и сравнения
True и False, приведение к bool, операторы сравнения, and/or/not, приоритет логических операторов, таблица истинности, двойные неравенства и задачи на условия.
Урок 07 — Summary session 2
Повторение арифметики, переменных, преобразования типов, bool, сравнений, логических операторов, контрольные вопросы, чаевые, налог и разбор домашних заданий.
Урок 08 — Операторы ветвления
if, elif, else, неявное преобразование в bool, несколько независимых if, вложенные условия, тернарный оператор и match-case (Python 3.10+).
Урок 09 — Практикум 2
11 практических задач на условия: упорядоченность, максимум, чётность, диапазоны, квадранты, время, знак произведения, прогрессивный налог и экстремальная погода.
Урок 10 — Математические функции, хранение чисел. Модули
Встроенные математические функции, импорт модулей, модуль math, биты и байты, хранение int/float, точность float и модуль Decimal.
Урок 11 — Summary session 3
Повторение операторов ветвления, логических операторов, тернарного оператора, match-case, встроенных математических функций, модулей и хранения чисел.
Урок 12 — Цикл while
Цикл с предусловием while, операторы break и continue, бесконечные циклы, конструкция while/else и модуль random.
Урок 13 — Практикум 3
Практические задачи на циклы while, break/continue, модуль random и комбинирование условий.
Урок 14 — Знакомство со строками
Строки как последовательности, индексация, срезы, неизменяемость, базовые методы, escape- и f-строки.
Урок 15 — Summary session 4
Повторение циклов while, строк, индексации, срезов и модуля random: контрольные вопросы и комбинированные задачи.
Урок 16 — Цикл for
Цикл for, функция range(), итерация по строкам, break/continue/else во for, enumerate и zip.
Урок 17 — Практикум 4
13 практических задач на циклы for, строки, коды символов, ASCII, палиндромы и баланс скобок.
Урок 18 — Знакомство с коллекциями: списки
Создание списков, индексация, срезы, изменение элементов, операции + и *, in, len, for по спискам.
Урок 19 — Summary session 5
Повторение циклов for, range, break/continue/else, вложенных циклов, списков и изменяемых типов.
Урок 20 — Методы строк
Методы регистра, поиска, замены, разбиения, объединения, предикаты и форматирование строк.
Урок 21 — Практикум 5
Практические задачи на строки, списки, циклы, методы строк и базовые алгоритмы.
Урок 22 — Строки: форматирование
C-style форматирование, метод str.format(), f-strings, форматирование чисел, выравнивание и методы ljust/rjust/center.
Урок 23 — Summary session 6
Повторение методов строк и форматирования: предикаты, поиск, регистр, replace, split/join, strip, f-strings.
Урок 24 — Кортежи
Кортежи как неизменяемые коллекции: создание, индексы, операции, преобразования, цикл for, упаковка и распаковка, enumerate(), count() и index().
Урок 25 — Практикум 6
Практические задачи на списки кортежей, табличный вывод, скидки, письма клиентам, отчёты по сотрудникам и спортивному мероприятию.
Урок 26 — Методы списков
Методы добавления, удаления, поиска, подсчёта, сортировки и разворота списков, а также функции sorted(), reversed(), min(), max() и sum().
Урок 27 — Summary session 7
Повторение кортежей, распаковки, enumerate(), методов списков, функций sorted(), reversed(), min(), max(), sum() и практических задач с таблицами.
Урок 28 — Списки. Работа с памятью
Изменяемые объекты, ссылки, id(), вложенные списки, del, поверхностное и глубокое копирование.
Урок 29 — Практикум 7
Практика списков, строк, кортежей, вложенных структур, бюджета, таблиц, последовательностей и шифра Цезаря.
Урок 30 — List comprehension. Стек и очередь
Списковые включения, условия, вложенные циклы, zip(), стек, очередь deque и устойчивость сортировки.
Урок 31 — Summary session 8
Повторение изменяемости, вложенных списков, копирования, list comprehension, zip(), стека, очереди и сортировки.
Урок 32 — Множества
set, хешируемость, hash(), добавление и удаление элементов, операции множеств, отношения и обход.
Урок 33 — Практикум 8
Практические задачи на list comprehension, zip(), матрицы, множества, уникальность, диагонали и очередь заказов.
Урок 34 — Словари, frozenset
Set comprehension, frozenset, создание словарей, хешируемые ключи, dict(), доступ по ключу, in, update(), del, pop() и popitem().
Урок 35 — Summary session 9
Повторение множеств, хеширования, set-операций, frozenset, словарей, преобразования в dict и безопасной работы с ключами.
Урок 36 — Словари. Продолжение
fromkeys(), get(), setdefault(), keys()/values()/items(), вложенные словари, copy(), deepcopy(), dict comprehension и сравнение словарей.
Урок 37 — Практикум 9
10 практических задач на set comprehension, общие ключи, словари длин, подмножества, очистку словарей, вложенные структуры, рецепты и frozenset.
Урок 38 — Функции. Области видимости
def, pass, вызов функций, позиционные и именованные аргументы, *args/**kwargs, return, None, LEGB и осторожная работа с global.
Урок 39 — Summary session 10
Повторение словарей, view objects, вложенных структур, shallow/deep copy, dict comprehension, функций, return, LEGB и global.
Урок 40 — Модуль collections
time.time(), OrderedDict, popitem(last=False), move_to_end(), кэш и LRU, defaultdict, Counter и операции счётчиков.
Урок 41 — Практикум 10
8 практических задач: популярные слова, категории задач, priority queue, defaultdict, группировка слов, global counter и LRU-очередь.
Урок 42 — Lambda-функции. Функции высшего порядка
Передача функций как объектов, lambda, парадигмы, map/filter/reduce, any/all и key= в sorted(), min(), max().
Урок 43 — Summary session 11
Повторение модулей time и collections, frozenset, functools.lru_cache, работы со словарями, передачи функций, lambda и парадигм.
Урок 44 — Документация. Аннотации типов
Docstrings и функция help(), аннотации типов для переменных и функций, встроенные generic-типы, модуль typing, передача изменяемых и неизменяемых объектов.
Урок 45 — Практикум 11
Практика функций высшего порядка: filter, lambda, reduce, sorted с key, работа со словарями, очередь с лимитом времени и цепочка шифрования.
Урок 46 — Рекурсия
Рекурсивные функции, базовый и рекурсивный случай, стек вызовов, RecursionError, факториал, бинарный поиск, хвостовая рекурсия, isinstance и deepcopy.
Урок 47 — Summary session 12
Повторение docstrings, help(), аннотаций типов, работы со словарями, рекурсии, хвостовой рекурсии, итерации и глубокого копирования.
Урок 48 — Исключения: обработка ошибок
Исключения, иерархия BaseException → Exception, try/except/else/finally, raise, пользовательские исключения, assert, логирование через logging и лучшие практики.
Урок 49 — Практикум 12
Пять задач на рекурсию с валидацией аргументов через исключения: сумма списка, реверс строки, глубина вложенности, сумма продаж, плоский словарь.
Урок 50 — Работа с файловой системой
Абсолютные и относительные пути, модуль os, навигация, создание и удаление файлов и папок, работа с путями, модуль sys и аргументы командной строки.
Урок 51 — Summary session 13
Повторение исключений, try/except/else/finally, raise, логирования, файловой системы, os и sys: контрольные вопросы и комбинированные задачи.
Урок 52 — Основы работы с файлами
Текстовые и бинарные файлы, функция open, режимы, кодировка, ручное закрытие и контекстный менеджер with, чтение и запись, режимы a/r+/x, несколько файлов.
Урок 53 — Практикум 13
Большая практическая задача: анализ продаж из CSV-файла, группировка по годам и месяцам, создание отчётов по категориям через argparse и collections.defaultdict.
Урок 54 — Итераторы и генераторные выражения
Протокол итератора: iter(), next(), __iter__, __next__, StopIteration. Как работает for под капотом. Модуль itertools и генераторные выражения.
Урок 55 — Summary session 14
Повторение итераторов, генераторных выражений и работы с файлами: короткие задачи на закрепление пройденного материала.
Урок 56 — Генераторы
Генераторные функции: yield, состояние генератора, yield from, close(). Параметризованные и бесконечные генераторы.
Урок 57 — Практикум 14
Практика генераторов: custom_range, генераторы случайных дат и имён, комбинирование генераторов, система распределения задач с файловым вводом-выводом.
Урок 58 — Файлы JSON и модуль datetime
Сериализация в JSON: dumps, loads, dump, load, работа с типами, JSONDecodeError. Модуль datetime: now, strftime, strptime, timedelta, сравнение дат.
Урок 59 — Summary session 15
Повторение генераторов, JSON и datetime: yield, yield from, сериализация, форматирование, разбор и сравнение дат, timedelta, практика поиска просроченных задач.
Урок 60 — Регулярные выражения
Модуль re: сырые строки, поиск, совпадение, поиск всех, замена, разбиение, флаги, классы символов, квантификаторы, группы, экранирование и компиляция шаблонов.
Урок 61 — Практикум 15
Практика: анализ оценок по кварталам из JSON, поиск немецких мобильных номеров, извлечение email и номеров банковских карт регулярными выражениями.
Урок 62 — Вложенные функции. Замыкание
Вложенные функции, LEGB, свободные переменные, замыкания, nonlocal, фабрики функций и ловушка позднего связывания.
Урок 63 — Summary session 16
Повторение регулярных выражений, практики 15, вложенных функций и замыканий: квиз, задачи и разбор домашних заданий.
Урок 64 — Декораторы
Синтаксис @decorator, замыкания, *args/**kwargs, возврат результата, functools.wraps, декораторы с аргументами, стекирование, логирование и измерение времени.
Урок 65 — Практикум 16
Шесть задач на декораторы: обрезка строк, параметризованные декораторы, кэширование, LRU-кэш, логирование и проверка типов аргументов.
Урок 66 — Основы ООП
Классы и объекты, __init__, self, поля и методы, создание экземпляров, отличие класса от объекта, первые шаги в ООП.
Урок 67 — Summary session 17
Семнадцатая сводная сессия: повторение декораторов и основ ООП — классы, объекты, __init__, self, поля, методы.
Урок 68 — Атрибуты объекта и класса
Атрибуты класса и экземпляра, @classmethod, @staticmethod, разрешение имён, строковые представления __str__ и __repr__.
Урок 69 — Практикум 17
Практика классов: класс Student с datetime, автоинкрементом ID, __str__, __repr__, @classmethod и @staticmethod.
Урок 70 — Наследование и полиморфизм
Наследование классов, переопределение методов, полиморфизм, функция super(), isinstance и issubclass.
Урок 71 — Summary session 18
Повторение наследования и полиморфизма: принципы ООП, super, overriding, isinstance, issubclass.
Урок 72 — Множественное наследование
Множественное наследование, миксины, hasattr, MRO, super() в цепочках, композиция и агрегация.
Урок 73 — Практикум 18
Практика наследования и миксинов: система кассовых чеков и система уведомлений.
Урок 74 — Инкапсуляция
Уровни доступа, защищённые и приватные методы, геттеры, сеттеры и декоратор @property.
Урок 75 — Summary session 19
Повторение множественного наследования, миксинов, MRO, super(), композиции, агрегации и инкапсуляции.
Урок 76 — Абстрактные классы и пользовательские исключения
Абстрактные классы через abc.ABC и @abstractmethod, пользовательские исключения, docstring и магические методы.
Урок 77 — Практикум 19
Электронная дверь с кодом: инкапсуляция, приватные атрибуты, пользовательские исключения и работа с datetime.
Урок 78 — Магические методы
Сравнение объектов, индексация, арифметика, __bool__, __call__ и декоратор @total_ordering.
Урок 79 — Summary session 20
Повторение абстрактных классов, пользовательских исключений и магических методов.
Урок 80 — MySQL и Python
Подключение к MySQL через PyMySQL, курсор, выполнение запросов, параметризованные запросы, обработка ошибок и контекстный менеджер with.
Урок 81 — Практикум 20
Пять практических задач на PyMySQL: сортировка сотрудников по зарплате, выбор департамента по номеру, пустые департаменты, фильтрация по зарплате и повторный ввод.
Урок 82 — MySQL. Транзакции
DictCursor, commit, executemany, создание баз и таблиц, транзакции и rollback в PyMySQL.
Урок 83 — Summary session 21
Повторение работы с MySQL из Python: соединение, курсор, параметризованные запросы, DictCursor, commit, executemany и транзакции.
Урок 84 — MongoDB и Python. Модули
Работа с MongoDB через PyMongo: подключение, CRUD-операции, курсор, проекция, обработка ошибок, модули, пакеты и __name__ == "__main__".
Урок 85 — Практикум 21
Онлайн-магазин книг, часть 1: создание БД bookstore, таблиц books/users, меню, загрузка книг из CSV, регистрация и вход через PyMySQL.
Урок 86 — Практикум 22
Онлайн-магазин книг, часть 2: покупка книг, таблица purchases, логирование поисков в MongoDB, анализ популярных запросов, разделение на модули.
Урок 87 — Summary session 22
Повторение работы с MySQL и MongoDB из Python: подключение, курсор, запросы, commit, закрытие ресурсов, разбор домашнего задания.
Урок 88 — Презентация проекта
Финальный проект: приложение для поиска фильмов по базе sakila (MySQL) с логированием запросов в MongoDB, модульной архитектурой и защитой проекта.
Курс завершён
Все 88 уроков курса Python Fundamentals созданы. Можно вернуться к любому разделу для повторения или воспользоваться картой тегов для поиска по темам.