Справочник по Python

Python по темам: от циклов и виртуального окружения до декораторов, генераторов и GIL. С работающим кодом, замерами и практикой прямо в браузере.

Основы Python

Циклы в Python: for, while, range, break и continue

Как написать цикл for и while в Python: перебор списка и строки, range и enumerate, break и continue, else у цикла, вложенные циклы и типовые ошибки.

Где используется Python: области применения и примеры

Где применяют Python: бэкенд, данные, ML, автоматизация и тесты. Разбираем примеры Instagram, Netflix, Dropbox, Spotify и Яндекса.

Изменяемые и неизменяемые типы в Python: mutable vs immutable

list, dict, set меняются на месте, str, tuple, int нет. Разбор через id(), парадокс t[0] += [x], хешируемость и кэш малых int на CPython 3.14.5.

Работа с файлами в Python: open, with и кодировка

Как открыть файл через with, прочитать построчно и записать, чем режимы w, a и x отличаются, зачем encoding и почему csv нельзя разбирать через split.

Преобразование типов в Python: int, float и str

Как превратить строку в число и обратно, почему int обрезает дробную часть, что не так с round и 0.1 + 0.2 и какие значения Python считает ложными.

Классы в Python: self, атрибуты, методы и экземпляры

Что такое класс и экземпляр, зачем нужен self и почему он не магия, чем атрибут класса отличается от атрибута экземпляра и когда класс писать не надо.

Функции в Python: def, параметры и return на примерах

Как создать и вызвать функцию Python: параметры, аргументы, return и print, значения по умолчанию, локальные переменные и причины возврата None.

Строки, списки и словари

Списки в Python: методы, индексы и срезы

Как обратиться к элементу списка по индексу, взять срез, добавить и удалить элемент, превратить список в строку через join и не сломать оригинал копией.

Словарь в Python: ключи, значения и методы dict

Как создать словарь, взять значение по ключу без KeyError через get, добавить и удалить элемент, обойти ключи и значения и работать со списком словарей.

List comprehension в Python: списковые включения с примерами

Как читать генератор списка построчно: цикл, условие, вложенность, dict/set включения, ловушка перезаписи ключей, замер против append и где он не подходит.

Сортировка списка в Python: sorted, key и reverse

Как отсортировать список по своему признаку через key, задать несколько уровней, развернуть порядок и почему reverse=True и срез дают разный результат.

Методы строк в Python: strip, replace, upper и find

Как привести строку к нужному регистру, убрать пробелы через strip, заменить часть через replace, найти подстроку и почему строка не меняется на месте.

f-строки в Python: форматирование и вывод чисел

Как подставить значение в текст через f-строку, округлить число, выровнять колонку, вывести проценты и разряды и чем f-строка отличается от format и %.

Регулярные выражения в Python: модуль re и шаблоны

Как искать по шаблону через re: search и match, findall и sub, группы и жадность, зачем сырые строки и когда регулярное выражение вообще не нужно.

JSON в Python: dumps и loads, файлы и разбор ошибок

Чем dumps отличается от dump, как читать и писать JSON-файл, почему кириллица уезжает в \uXXXX, что делать с datetime и Decimal и как читать JSONDecodeError.

Множества set в Python: пересечение, объединение и разность

Как создавать множества Python, добавлять и удалять элементы, находить пересечение и разность наборов. Примеры set, frozenset, add, discard и remove.

Дата и время

Продвинутые конструкции

Декораторы в Python: как работают и зачем нужны

Декоратор — функция, которая оборачивает другую функцию. Как разворачивается @, зачем functools.wraps, декораторы с аргументами и классом, порядок применения и типовые ошибки.

Генераторы в Python: yield, ленивые вычисления и итераторы

Как работает yield, чем генераторное выражение отличается от спискового включения, замеры памяти на 10 млн элементов, yield from, send и почему генератор одноразовый.

Контекстные менеджеры в Python: with, __enter__ и __exit__

Как устроен with python на практике: протокол __enter__/__exit__, свой таймер блока, ловушка return True в __exit__, contextlib и ExitStack на реальных замерах.

Паттерны проектирования в Python

Восемь самых ходовых паттернов на одном примере интернет-магазина: стратегия, фабрика, одиночка, наблюдатель, декоратор, адаптер, фасад, команда. Со схемами, работающим кодом и честным «когда паттерн лишний».

dataclass в Python: что это и как использовать

Что даёт декоратор dataclass, почему изменяемое значение по умолчанию запрещено, зачем default_factory и frozen и когда обычный словарь подойдёт лучше.

*args и **kwargs в Python: что это и как работает

Что собирают звёздочки в сигнатуре функции, почему на вызове они делают ровно обратное, что означают голая звезда и слэш и зачем всё это декораторам.

Асинхронность и параллелизм

Окружение и инструменты

Ошибки и исключения

try/except в Python: обработка исключений

try/except в Python на работающих примерах: как поймать конкретную ошибку, использовать else, finally и raise, повторить действие и не скрыть исключение.

TypeError и ValueError в Python: чем отличаются

TypeError — не тот тип, ValueError — тот тип, но негодное значение. Правило, которое предсказывает ошибку заранее, и таблица частых сообщений с разбором каждого.

SyntaxError: invalid syntax в Python — причины и исправление

Как читать стрелку в SyntaxError, где искать пропущенную скобку или двоеточие и почему pip install нельзя вводить после >>>. Семь ошибок с исправлениями.

IndentationError: unexpected indent в Python — как исправить

Почему Python выдаёт unexpected indent, expected an indented block, unindent does not match и TabError. Исправляем лишний отступ, табы и пробелы.

ModuleNotFoundError: No module named в Python — как найти причину

Как диагностировать ModuleNotFoundError: проверить точное имя, интерпретатор, venv, установку, sys.path и структуру локального пакета — без случайных пакетов из PyPI.

ImportError: cannot import name в Python — циклический и относительный импорт

Как исправить ImportError: cannot import name: найти неверное имя, распутать циклический импорт и починить относительный запуск.

AttributeError: object has no attribute в Python — как проверить тип и имя

Практическая диагностика AttributeError в Python: читаем traceback, проверяем runtime type, NoneType, имя, __init__, property, модуль и безопасно исследуем атрибуты.

NameError и UnboundLocalError в Python: области видимости LEGB и nonlocal

Как найти причину name is not defined и cannot access local variable: поиск LEGB, локальные присваивания, global, nonlocal и безопасные исправления.

Разбор задач