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

Python удобно изучать на задачах: посчитать расходы, разобрать текст, прочитать файл, собрать отчёт. В этом руководстве пройдём путь от установки и первых выражений до функций, классов, сети, тестов и самостоятельных проектов.
Выберите одну из 25 глав или найдите нужную функцию через поиск. В справочнике собраны все 73 позиции официальной таблицы встроенных функций и типов Python 3.15, а также 161 метод и 12 свойств строк, коллекций и путей. Для каждой позиции есть назначение, важный нюанс и ссылка на первичную документацию.
Код можно копировать и скачивать. 195 самостоятельных примеров проверены запуском на Python 3.15.0; у упражнений есть решения и ожидаемый результат. Новые возможности языка отмечены в тексте, а интерактивные фрагменты и команды установки объяснены отдельно.
Если начинаете с нуля, открывайте главы по порядку. Если решаете конкретную задачу, ищите по-русски или по имени Python: open, str.split, Path.read_text.
Все главы руководства 25
Глава 2 · начальный
Синтаксис, имена, значения и операторы
Читать небольшую программу и понимать порядок вычислений.
Читайте программу как последовательность действий над значениями. Сначала выясните, какие имена уже определены, затем посмотрите, какие выражения вычисляются и что изменяется. Одна строка может только вычислять значение, другая — связывать его с именем, третья — выбирать дальнейший путь. Это различие помогает понять код раньше, чем вы запомните все операторы.
Имя связано с объектом
Запись quantity = 3 связывает имя с числом. Знак = здесь не означает математическое равенство и не запускает постоянное пересчитывание: правая часть вычисляется в момент выполнения строки. Если позже изменить quantity, ранее посчитанный итог автоматически не обновится. Для нового итога нужно снова выполнить выражение.
Несколько имён могут ссылаться на один объект. Это особенно заметно со списками и словарями, которые изменяются на месте. Присваивание другому имени не создаёт копию. При этом переназначение имени и изменение самого объекта — разные действия. Полезно проговаривать их отдельно: «это имя теперь обозначает другой список» и «в общий список добавлена запись».
Блоки, отступы и комментарии
После заголовка блока с двоеточием идут строки с отступом: так записываются ветки условий, циклы и тела функций. Обычно используют четыре пробела. Не смешивайте пробелы и табуляцию в одном отступе. Редактор может визуально выровнять разные символы, а интерпретатор всё равно обнаружит несогласованную структуру.
Комментарий начинается с # и заканчивается вместе со строкой. Объясняйте им причину решения, а не очевидное действие каждой инструкции. Docstring — строка в начале модуля, функции или класса; инструменты используют её как описание объекта. Это не отдельный оператор комментария, хотя тройные кавычки позволяют удобно записать несколько строк текста.
Вычисление и порядок действий
Операторы +, -, *, /, //, % и ** выполняют арифметику. Скобки делают порядок понятнее. В условии сравнение == проверяет равенство значений, а != — различие. Для диапазона удобно 0 <= quantity <= 10: цепочка сравнивает соседние значения, среднее выражение вычисляется один раз.
price = 1500
quantity = 3
delivery = 250
discount = 500
total = price * quantity + delivery - discount
print("Итого:", total)
print("Количество допустимо:", 0 <= quantity <= 10)
Итого: 4250 Количество допустимо: True
Не используйте приоритет операторов как головоломку для читателя. Если выражение совмещает расчёт, сравнение и логическую проверку, разделите его на осмысленные шаги. Например, сначала вычислите итог, затем проверьте лимит. Так проще вывести промежуточное значение при поиске ошибки и отдельно проверить граничный случай.
Истинность и короткое вычисление
В условии пустые строки, списки и словари, нулевые числа, None и False обычно считаются ложными. Это называется проверкой истинности. Для непустого списка достаточно if items:; сравнение items == True решает другую задачу и не означает «список содержит данные».
and и or возвращают один из операндов, а не обязательно bool. Второй операнд вычисляется только при необходимости. Выражение nickname or "Гость" удобно для пустой строки, но также заменит ноль, пустой список и другие ложные значения. Если ноль допустим, проверяйте именно None либо отдельно сформулированное правило.
nickname = ""
print(nickname or "Гость")
count = 0
print(count or 10)
print(count if count is not None else 10)
print(bool([]), bool([0]))
print(isinstance(True, int), type(True) is int)
Гость 10 0 False True True False
bool является подтипом int, поэтому isinstance(True, int) истинно. При проверке количества подумайте, принимает ли ваш договор True вместо числа. Для точного встроенного типа подходит type(value) is int; для полиморфных объектов такая строгость может быть лишней. Выбор определяется контрактом функции, а не универсальным правилом для любого ввода.
Непустой текст "False" также истинен: bool проверяет наличие содержимого, а не переводит слово в логическое значение. Если настройка приходит строкой, сначала определите допустимые обозначения, например «да» и «нет», затем разберите их явно. Нельзя считать любую непустую строку подтверждением действия только потому, что условие Python сочло её истинной.
Равенство и идентичность
== сравнивает значения по правилам типа. is проверяет, один ли это объект. Два отдельно созданных списка могут содержать одинаковые элементы, но не быть одним списком. Для числа или строки проверяйте значение через ==. Повторное использование некоторых неизменяемых объектов интерпретатором не является подходящей основой для бизнес-логики.
first = ["черновик"]
same = first
equal = ["черновик"]
print(first == equal, first is equal)
print(first is same)
same.append("проверено")
print(first)
print(equal)
True False True ['черновик', 'проверено'] ['черновик']
Для отсутствия значения используйте value is None. None — отдельный объект, а не пустая строка, ноль или слово «нет». Вопрос «значение не передано?» может отличаться от «передано пустое значение». Когда это различие важно, дальше пригодится отдельный sentinel. Членство in проверяет наличие элемента; для словаря оно относится к ключам.
Распаковка и присваивание в выражении
Распаковка name, count = record распределяет значения по именам. Без звёздочки число элементов должно совпасть: слишком мало или много элементов дадут ValueError. Запись first, *rest = values собирает остальные элементы в список. Это выразительнее ручных индексов, когда структура записи заранее понятна.
Оператор :=, доступный с Python 3.8, связывает имя прямо внутри выражения. Он полезен, когда один результат нужен и для проверки, и для следующего действия. Не используйте его только ради сокращения числа строк: сложное условие с несколькими присваиваниями труднее читать. Обычная отдельная строка остаётся хорошим вариантом.
for title in ("Код", "Руководство", ""):
if (length := len(title)) > 5:
print(title, length)
Руководство 11
Упражнение: сохранить допустимый ноль
Есть значения [None, 0, 4]. Для отсутствующего значения подставьте 10, а ноль оставьте нулём. Напечатайте итоговый список. Затем объясните, почему value or 10 не подходит. Упражнение проверяет смысл условия, а не только знание короткого синтаксиса.
Решение упражнения
values = [None, 0, 4]
prepared = [10 if value is None else value for value in values]
print(prepared)
[10, 0, 4]
Формальные правила сравнения и вычисления: выражения Python. Короткие примеры проверяйте отдельно, если сомневаетесь в поведении типа или границе условия.
Примеры и материалы с собой
Архив содержит наши самостоятельные примеры, тестовые данные, ожидаемый результат и README. Указанные команды установки и фрагменты REPL отделены от скриптов, которые проверены запуском.
Сверено с официальной документацией 2026-10-12. Стандартная библиотека и сторонние пакеты различаются; ссылки на источники есть в каждой главе.


