Глава 13 · Автоматизация с помощью функций
Зачем нужны функции?
Параметр — это имя в определении. Аргумент — значение, переданное при вызове. Разница между ними — фундамент всего, что будет дальше.
Зачем нужны функции?
- Код не повторяется — исправление вносится в одном месте.
- Программу легче читать — имя функции объясняет, что происходит, не заставляя вникать в детали реализации.
- Легче искать ошибки — если что-то сломалось в приветствии, вы точно
знаете, где искать: внутри
privetstvie().
Каждый раз делаем что-то новое!
Функция без входных данных всегда делает одно и то же. Чтобы функция вела себя по-разному в зависимости от ситуации, ей передают аргументы — значения в скобках при вызове:
argumenty.py
def privetstvie(imya):
print(f"Привет, {imya}!")
privetstvie("Ада")
privetstvie("Cartesian")
Параметр vs аргумент — точное различие
Эти два слова легко перепутать, но у них разные роли:
| Где встречается | Что это | |
|---|---|---|
| Параметр | в определении: def privetstvie(imya): | локальное имя внутри функции |
| Аргумент | в вызове: privetstvie("Ада") | объект/значение, переданное при вызове |
Параметры — это локальные имена
Продолжим уже знакомую модель «имя указывает на объект» (глава 3): вызов функции создаёт новую привязку параметра к переданному объекту:
«Передача по значению» и «по ссылке» — вводят в заблуждение
Не думайте о Python как о языке, где «всё передаётся по ссылке» или «всё передаётся по значению» — обе формулировки слишком неточны и здесь не нужны. Точнее так: при вызове функции её параметры привязываются к тем же объектам, что и переданные аргументы — та же модель «имя → объект», что мы используем с самой главы 3. Иногда это называют call by sharing, но специальный термин запоминать не обязательно — важна сама модель.
Без аргументов?
Функция без параметров в скобках — например, privetstvie()
из §13.2 — тоже совершенно нормальна: не каждой функции нужны входные данные.
Практика: параметр vs аргумент
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки