Глава 13 · Автоматизация с помощью функций

Настоящая автоматизация

Функции переиспользуют набор действий столько раз, сколько нужно — без копирования кода.

Настоящая автоматизация

Циклы из главы 10 автоматизировали повторение одного и того же кода. Но что если один и тот же набор действий нужен в разных местах программы — не подряд, а время от времени? Копировать код каждый раз — плохая идея: любое исправление придётся вносить во все копии. Функции решают эту проблему раз и навсегда.

Наша первая функция

pervaya_funkciya.py
def privetstvie():
    print("Привет, Python!")

privetstvie()
privetstvie()
privetstvie()

Анатомия def

ЧастьЗначение
defключевое слово: «дальше идёт определение функции»
privetstvieимя функции — по нему функцию будут вызывать
()список параметров (здесь пуст — функция не принимает данных)
:начало тела функции
print(...)тело — код с отступом, который выполнится при вызове

def определяет функцию — записывает её код, но пока не выполняет его. Функция выполняется только тогда, когда вы её вызываете — по имени со скобками: privetstvie().

Определение — это ещё не вызов
Если написать только def privetstvie(): ... и не добавить privetstvie() ниже, программа не выведет ничего — Python просто запомнит функцию, но не запустит её.

Определение выполняется один раз, по-особому

Когда Python доходит до строки def privetstvie():, тело функции не выполняется как обычные последовательные команды. Вместо этого создаётся объект функции, привязанный к имени privetstvie — и выполнение программы продолжается СРАЗУ ПОСЛЕ определения. Тело запустится только позже, когда произойдёт вызов.

Функция как объект

Мы уже знаем модель «имя указывает на объект» (глава 3). Функция — не исключение:

privetstvieФУНКЦИЯ-ОБЪЕКТ
После def имя privetstvie указывает на объект функции
imya_bez_skobok.py
print(privetstvie)   # <function privetstvie at 0x...> — сам объект функции
privetstvie()          # Привет, Python! — а это ВЫЗОВ
privetstvie и privetstvie() — не одно и то же
Без скобок — обращение к самому объекту функции (её можно передать, сохранить, сравнить). Со скобками — команда «выполни её прямо сейчас». Это различие станет особенно важным в §13.17, когда функции начнут передаваться как обычные значения.
Практика: определяем и вызываем первую функцию
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →