Python Fundamentals

Интерактивный курс по основам Python: синтаксис, типы данных, строки, коллекции, функции, файлы, исключения, ООП, регулярные выражения и работа с базами данных. Разработка идёт по одному уроку за итерацию.

Что нужно знать заранее

  • Специальная подготовка не требуется.
  • Нужны Python 3.x, VS Code или другой редактор, терминал.
  • Код в уроках пишется на английском, объяснения — на русском.

Старт курса

Урок 01 — Основы работы с Python

Особенности Python, интерпретатор и компилятор, переменные, присваивание, имена, синтаксис, комментарии, PEP 8, print() и input().

Начальная~60 мин

Урок 02 — Базовые типы данных, работа с функциями

Типы данных и объекты, динамическая типизация, int/float/str/bool/None, возвращаемое значение, type(), строки, кавычки, escape-последовательности, sep и end.

Начальная~65 мин

Урок 03 — Summary session 1

Повторение первых двух уроков: Python, переменные, синтаксис, print/input, типы данных, строки, sep/end, контрольные вопросы и практическая работа.

Повторение~60 мин

Урок 04 — Арифметические операторы, выражения

Числа, арифметические операции, ZeroDivisionError, приоритет операций, неизменяемость, составные присваивания, множественное присваивание и преобразование типов.

Начальная~70 мин

Урок 05 — Практикум 1

Девять практических задач на ввод/вывод, строки, кавычки, арифметику, преобразование типов, время, стоимость поездки и работу с цифрами числа.

Практикум~80 мин

Урок 06 — Логический тип данных и сравнения

True и False, приведение к bool, операторы сравнения, and/or/not, приоритет логических операторов, таблица истинности, двойные неравенства и задачи на условия.

Начальная~75 мин

Урок 07 — Summary session 2

Повторение арифметики, переменных, преобразования типов, bool, сравнений, логических операторов, контрольные вопросы, чаевые, налог и разбор домашних заданий.

Повторение~80 мин

Урок 08 — Операторы ветвления

if, elif, else, неявное преобразование в bool, несколько независимых if, вложенные условия, тернарный оператор и match-case (Python 3.10+).

Начальная~75 мин

Урок 09 — Практикум 2

11 практических задач на условия: упорядоченность, максимум, чётность, диапазоны, квадранты, время, знак произведения, прогрессивный налог и экстремальная погода.

Практикум~90 мин

Урок 10 — Математические функции, хранение чисел. Модули

Встроенные математические функции, импорт модулей, модуль math, биты и байты, хранение int/float, точность float и модуль Decimal.

Начальная~90 мин

Урок 11 — Summary session 3

Повторение операторов ветвления, логических операторов, тернарного оператора, match-case, встроенных математических функций, модулей и хранения чисел.

Повторение~90 мин

Урок 12 — Цикл while

Цикл с предусловием while, операторы break и continue, бесконечные циклы, конструкция while/else и модуль random.

Начальная~90 мин

Урок 13 — Практикум 3

Практические задачи на циклы while, break/continue, модуль random и комбинирование условий.

Практикум~90 мин

Урок 14 — Знакомство со строками

Строки как последовательности, индексация, срезы, неизменяемость, базовые методы, escape- и f-строки.

Начальная~90 мин

Урок 15 — Summary session 4

Повторение циклов while, строк, индексации, срезов и модуля random: контрольные вопросы и комбинированные задачи.

Повторение~90 мин

Урок 16 — Цикл for

Цикл for, функция range(), итерация по строкам, break/continue/else во for, enumerate и zip.

Начальная~90 мин

Урок 17 — Практикум 4

13 практических задач на циклы for, строки, коды символов, ASCII, палиндромы и баланс скобок.

Практикум~120 мин

Урок 18 — Знакомство с коллекциями: списки

Создание списков, индексация, срезы, изменение элементов, операции + и *, in, len, for по спискам.

Начальная~100 мин

Урок 19 — Summary session 5

Повторение циклов for, range, break/continue/else, вложенных циклов, списков и изменяемых типов.

Повторение~90 мин

Урок 20 — Методы строк

Методы регистра, поиска, замены, разбиения, объединения, предикаты и форматирование строк.

Начальная~100 мин

Урок 21 — Практикум 5

Практические задачи на строки, списки, циклы, методы строк и базовые алгоритмы.

Практикум~120 мин

Урок 22 — Строки: форматирование

C-style форматирование, метод str.format(), f-strings, форматирование чисел, выравнивание и методы ljust/rjust/center.

Начальная — средняя~90 мин

Урок 23 — Summary session 6

Повторение методов строк и форматирования: предикаты, поиск, регистр, replace, split/join, strip, f-strings.

Повторение~90 мин

Урок 24 — Кортежи

Кортежи как неизменяемые коллекции: создание, индексы, операции, преобразования, цикл for, упаковка и распаковка, enumerate(), count() и index().

Начальная — средняя~90 мин

Урок 25 — Практикум 6

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

Практикум~120 мин

Урок 26 — Методы списков

Методы добавления, удаления, поиска, подсчёта, сортировки и разворота списков, а также функции sorted(), reversed(), min(), max() и sum().

Начальная — средняя~100 мин

Урок 27 — Summary session 7

Повторение кортежей, распаковки, enumerate(), методов списков, функций sorted(), reversed(), min(), max(), sum() и практических задач с таблицами.

Повторение~90 мин

Урок 28 — Списки. Работа с памятью

Изменяемые объекты, ссылки, id(), вложенные списки, del, поверхностное и глубокое копирование.

Начальная — средняя~100 мин

Урок 29 — Практикум 7

Практика списков, строк, кортежей, вложенных структур, бюджета, таблиц, последовательностей и шифра Цезаря.

Практикум~120 мин

Урок 30 — List comprehension. Стек и очередь

Списковые включения, условия, вложенные циклы, zip(), стек, очередь deque и устойчивость сортировки.

Начальная — средняя~100 мин

Урок 31 — Summary session 8

Повторение изменяемости, вложенных списков, копирования, list comprehension, zip(), стека, очереди и сортировки.

Повторение~100 мин

Урок 32 — Множества

set, хешируемость, hash(), добавление и удаление элементов, операции множеств, отношения и обход.

Начальная — средняя~110 мин

Урок 33 — Практикум 8

Практические задачи на list comprehension, zip(), матрицы, множества, уникальность, диагонали и очередь заказов.

Практикум~120 мин

Урок 34 — Словари, frozenset

Set comprehension, frozenset, создание словарей, хешируемые ключи, dict(), доступ по ключу, in, update(), del, pop() и popitem().

Начальная - средняя~110 мин

Урок 35 — Summary session 9

Повторение множеств, хеширования, set-операций, frozenset, словарей, преобразования в dict и безопасной работы с ключами.

Повторение~100 мин

Урок 36 — Словари. Продолжение

fromkeys(), get(), setdefault(), keys()/values()/items(), вложенные словари, copy(), deepcopy(), dict comprehension и сравнение словарей.

Начальная - средняя~115 мин

Урок 37 — Практикум 9

10 практических задач на set comprehension, общие ключи, словари длин, подмножества, очистку словарей, вложенные структуры, рецепты и frozenset.

Практикум~120 мин

Урок 38 — Функции. Области видимости

def, pass, вызов функций, позиционные и именованные аргументы, *args/**kwargs, return, None, LEGB и осторожная работа с global.

Начальная - средняя~120 мин

Урок 39 — Summary session 10

Повторение словарей, view objects, вложенных структур, shallow/deep copy, dict comprehension, функций, return, LEGB и global.

Повторение~100 мин

Урок 40 — Модуль collections

time.time(), OrderedDict, popitem(last=False), move_to_end(), кэш и LRU, defaultdict, Counter и операции счётчиков.

Начальная - средняя~115 мин

Урок 41 — Практикум 10

8 практических задач: популярные слова, категории задач, priority queue, defaultdict, группировка слов, global counter и LRU-очередь.

Практикум~120 мин

Урок 42 — Lambda-функции. Функции высшего порядка

Передача функций как объектов, lambda, парадигмы, map/filter/reduce, any/all и key= в sorted(), min(), max().

Начальная - средняя~115 мин

Урок 43 — Summary session 11

Повторение модулей time и collections, frozenset, functools.lru_cache, работы со словарями, передачи функций, lambda и парадигм.

Повторение~120 мин

Урок 44 — Документация. Аннотации типов

Docstrings и функция help(), аннотации типов для переменных и функций, встроенные generic-типы, модуль typing, передача изменяемых и неизменяемых объектов.

Начальная — средняя~100 мин

Урок 45 — Практикум 11

Практика функций высшего порядка: filter, lambda, reduce, sorted с key, работа со словарями, очередь с лимитом времени и цепочка шифрования.

Практикум~120 мин

Урок 46 — Рекурсия

Рекурсивные функции, базовый и рекурсивный случай, стек вызовов, RecursionError, факториал, бинарный поиск, хвостовая рекурсия, isinstance и deepcopy.

Средняя~90 мин

Урок 47 — Summary session 12

Повторение docstrings, help(), аннотаций типов, работы со словарями, рекурсии, хвостовой рекурсии, итерации и глубокого копирования.

Повторение~120 мин

Урок 48 — Исключения: обработка ошибок

Исключения, иерархия BaseException → Exception, try/except/else/finally, raise, пользовательские исключения, assert, логирование через logging и лучшие практики.

Средняя~100 мин

Урок 49 — Практикум 12

Пять задач на рекурсию с валидацией аргументов через исключения: сумма списка, реверс строки, глубина вложенности, сумма продаж, плоский словарь.

Практикум~120 мин

Урок 50 — Работа с файловой системой

Абсолютные и относительные пути, модуль os, навигация, создание и удаление файлов и папок, работа с путями, модуль sys и аргументы командной строки.

Средняя~100 мин

Урок 51 — Summary session 13

Повторение исключений, try/except/else/finally, raise, логирования, файловой системы, os и sys: контрольные вопросы и комбинированные задачи.

Повторение~90 мин

Урок 52 — Основы работы с файлами

Текстовые и бинарные файлы, функция open, режимы, кодировка, ручное закрытие и контекстный менеджер with, чтение и запись, режимы a/r+/x, несколько файлов.

Средняя~110 мин

Урок 53 — Практикум 13

Большая практическая задача: анализ продаж из CSV-файла, группировка по годам и месяцам, создание отчётов по категориям через argparse и collections.defaultdict.

Практикум~120 мин

Урок 54 — Итераторы и генераторные выражения

Протокол итератора: iter(), next(), __iter__, __next__, StopIteration. Как работает for под капотом. Модуль itertools и генераторные выражения.

Средняя~100 мин

Урок 55 — Summary session 14

Повторение итераторов, генераторных выражений и работы с файлами: короткие задачи на закрепление пройденного материала.

Повторение~90 мин

Урок 56 — Генераторы

Генераторные функции: yield, состояние генератора, yield from, close(). Параметризованные и бесконечные генераторы.

Средняя~100 мин

Урок 57 — Практикум 14

Практика генераторов: custom_range, генераторы случайных дат и имён, комбинирование генераторов, система распределения задач с файловым вводом-выводом.

Практикум~120 мин

Урок 58 — Файлы JSON и модуль datetime

Сериализация в JSON: dumps, loads, dump, load, работа с типами, JSONDecodeError. Модуль datetime: now, strftime, strptime, timedelta, сравнение дат.

Средняя~110 мин

Урок 59 — Summary session 15

Повторение генераторов, JSON и datetime: yield, yield from, сериализация, форматирование, разбор и сравнение дат, timedelta, практика поиска просроченных задач.

Повторение~90 мин

Урок 60 — Регулярные выражения

Модуль re: сырые строки, поиск, совпадение, поиск всех, замена, разбиение, флаги, классы символов, квантификаторы, группы, экранирование и компиляция шаблонов.

Средняя~110 мин

Урок 61 — Практикум 15

Практика: анализ оценок по кварталам из JSON, поиск немецких мобильных номеров, извлечение email и номеров банковских карт регулярными выражениями.

Средняя~110 мин

Урок 62 — Вложенные функции. Замыкание

Вложенные функции, LEGB, свободные переменные, замыкания, nonlocal, фабрики функций и ловушка позднего связывания.

Средняя~110 мин

Урок 63 — Summary session 16

Повторение регулярных выражений, практики 15, вложенных функций и замыканий: квиз, задачи и разбор домашних заданий.

Повторение~90 мин

Урок 64 — Декораторы

Синтаксис @decorator, замыкания, *args/**kwargs, возврат результата, functools.wraps, декораторы с аргументами, стекирование, логирование и измерение времени.

Средняя~90 мин

Урок 65 — Практикум 16

Шесть задач на декораторы: обрезка строк, параметризованные декораторы, кэширование, LRU-кэш, логирование и проверка типов аргументов.

Практикум~90 мин

Урок 66 — Основы ООП

Классы и объекты, __init__, self, поля и методы, создание экземпляров, отличие класса от объекта, первые шаги в ООП.

Средняя~90 мин

Урок 67 — Summary session 17

Семнадцатая сводная сессия: повторение декораторов и основ ООП — классы, объекты, __init__, self, поля, методы.

Повторение~90 мин

Урок 68 — Атрибуты объекта и класса

Атрибуты класса и экземпляра, @classmethod, @staticmethod, разрешение имён, строковые представления __str__ и __repr__.

Средняя~90 мин

Урок 69 — Практикум 17

Практика классов: класс Student с datetime, автоинкрементом ID, __str__, __repr__, @classmethod и @staticmethod.

Практикум~90 мин

Урок 70 — Наследование и полиморфизм

Наследование классов, переопределение методов, полиморфизм, функция super(), isinstance и issubclass.

Средняя~90 мин

Урок 71 — Summary session 18

Повторение наследования и полиморфизма: принципы ООП, super, overriding, isinstance, issubclass.

Повторение~60 мин

Урок 72 — Множественное наследование

Множественное наследование, миксины, hasattr, MRO, super() в цепочках, композиция и агрегация.

Средняя~90 мин

Урок 73 — Практикум 18

Практика наследования и миксинов: система кассовых чеков и система уведомлений.

Практикум~90 мин

Урок 74 — Инкапсуляция

Уровни доступа, защищённые и приватные методы, геттеры, сеттеры и декоратор @property.

Средняя~90 мин

Урок 75 — Summary session 19

Повторение множественного наследования, миксинов, MRO, super(), композиции, агрегации и инкапсуляции.

Повторение~60 мин

Урок 76 — Абстрактные классы и пользовательские исключения

Абстрактные классы через abc.ABC и @abstractmethod, пользовательские исключения, docstring и магические методы.

Средняя~90 мин

Урок 77 — Практикум 19

Электронная дверь с кодом: инкапсуляция, приватные атрибуты, пользовательские исключения и работа с datetime.

Практикум~90 мин

Урок 78 — Магические методы

Сравнение объектов, индексация, арифметика, __bool__, __call__ и декоратор @total_ordering.

Средняя~90 мин

Урок 79 — Summary session 20

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

Повторение~60 мин

Урок 80 — MySQL и Python

Подключение к MySQL через PyMySQL, курсор, выполнение запросов, параметризованные запросы, обработка ошибок и контекстный менеджер with.

Средняя~90 мин

Урок 81 — Практикум 20

Пять практических задач на PyMySQL: сортировка сотрудников по зарплате, выбор департамента по номеру, пустые департаменты, фильтрация по зарплате и повторный ввод.

Практикум~90 мин

Урок 82 — MySQL. Транзакции

DictCursor, commit, executemany, создание баз и таблиц, транзакции и rollback в PyMySQL.

Средняя~90 мин

Урок 83 — Summary session 21

Повторение работы с MySQL из Python: соединение, курсор, параметризованные запросы, DictCursor, commit, executemany и транзакции.

Повторение~60 мин

Урок 84 — MongoDB и Python. Модули

Работа с MongoDB через PyMongo: подключение, CRUD-операции, курсор, проекция, обработка ошибок, модули, пакеты и __name__ == "__main__".

Средняя~90 мин

Урок 85 — Практикум 21

Онлайн-магазин книг, часть 1: создание БД bookstore, таблиц books/users, меню, загрузка книг из CSV, регистрация и вход через PyMySQL.

Практикум~120 мин

Урок 86 — Практикум 22

Онлайн-магазин книг, часть 2: покупка книг, таблица purchases, логирование поисков в MongoDB, анализ популярных запросов, разделение на модули.

Практикум~120 мин

Урок 87 — Summary session 22

Повторение работы с MySQL и MongoDB из Python: подключение, курсор, запросы, commit, закрытие ресурсов, разбор домашнего задания.

Повторение~90 мин

Урок 88 — Презентация проекта

Финальный проект: приложение для поиска фильмов по базе sakila (MySQL) с логированием запросов в MongoDB, модульной архитектурой и защитой проекта.

Проект~180 мин

Курс завершён

Все 88 уроков курса Python Fundamentals созданы. Можно вернуться к любому разделу для повторения или воспользоваться картой тегов для поиска по темам.