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

Позиционные и именованные аргументы

Два способа сообщить функции, какой аргумент к какому параметру относится — у каждого свои плюсы.

Несколько параметров

neskolko_parametrov.py
def rectangle_area(width, height):
    return width * height

print(rectangle_area(10, 5))   # 50
АргументПараметр
10width
5height

Позиционные аргументы

По умолчанию Python сопоставляет аргументы с параметрами по порядку — первый аргумент попадает в первый параметр, и так далее:

pozicionnye.py
create_user("Anna", 25)
# position 1 → name = "Anna"
# position 2 → age  = 25
Перепутанный порядок — не всегда ошибка Python, но всегда ошибка логики
create_user(25, "Anna") может не вызвать никакой ошибки типов — Python не запрещает передать число туда, где обычно передают строку. Но результат окажется логически неверным: name получит 25, а age"Anna". Позиционные аргументы удобны, но требуют помнить точный порядок.

Именованные аргументы

Аргумент можно передать по имени параметра — тогда порядок уже не важен:

imennye.py
create_user(
    name="Anna",
    age=25,
)
Зачем именованные аргументы
Читаемость
видно, что есть что, прямо в вызове
Порядок неважен
age=25, name="Anna" — сработает так же
Удобство API
особенно при многих параметрах

Смешиваем позиционные и именованные

smeshannye.py
def function(width, height, color):
    ...

function(10, height=20, color="red")   # можно
Правило порядка
Позиционные аргументы всегда идут ПЕРЕД именованными в вызове — function(width=10, 20, "red") вызовет SyntaxError. И один и тот же параметр нельзя получить дважды — function(10, 20, width=5) вызовет TypeError, так как width уже получил значение позиционно.
Практика: позиционные и именованные аргументы
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →