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

Python по темам: от циклов и виртуального окружения до тестов pytest, логирования и 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: что это и как работает

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

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

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

Виртуальное окружение Python: как создать и активировать venv

Команды для создания и активации venv на Windows, macOS и Linux. Разбираем установку пакетов, requirements.txt, .gitignore и частые ошибки.

uv для Python: установка, замена pip и venv, первые команды

uv объединяет venv, pip и выбор версии Python: одна команда ставит пакет, обновляет uv.lock и окружение. Как установить uv и перейти с requirements.txt.

Как запустить телеграм-бота на Python: токен и первый старт

Токен у @BotFather, переменная окружения на Linux, macOS и Windows, запуск python3 main.py, ошибки 401 и 409 и автозапуск без открытого терминала.

Requests в Python: GET, POST, JSON и тайм-ауты

Как отправлять HTTP-запросы через Python Requests: params, JSON в POST, status_code, timeout и обработка ошибок. Полный пример с локальным учебным API.

Pytest для начинающих: первый тест и поиск ошибки на границе

Как установить pytest, написать первый тест Python и прочитать AssertionError. На примере проверки длины найдём ошибку и проверим пять случаев через parametrize.

logging в Python: уровни, настройка и повторные сообщения

Почему Python не показывает INFO, как настроить basicConfig, записать исключение со стеком и убрать дубли логов. Примеры с handlers и propagate.

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

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 и безопасные исправления.

Разбор задач