Глава 13 · Автоматизация с помощью функций
Позиционные и именованные аргументы
Два способа сообщить функции, какой аргумент к какому параметру относится — у каждого свои плюсы.
Несколько параметров
neskolko_parametrov.py
def rectangle_area(width, height):
return width * height
print(rectangle_area(10, 5)) # 50
| Аргумент | Параметр |
|---|---|
| 10 | width |
| 5 | height |
Позиционные аргументы
По умолчанию 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, без установки