Параметры и аргументы
Наши прежние функции каждый раз делают одно и то же. Но чтобы вычислить площадь любого прямоугольника, функции нужно знать его ширину и высоту. Такие значения функции получают через параметры:
def introduce(name):
print(f"Меня зовут {name}.")
introduce("Анна")
introduce("Том")Выведется:
Меня зовут Анна.
Меня зовут Том.В определении name в скобках — это параметр: переменная, которую функция может использовать в своём теле. Вы не создаёте её через =; её создают скобки в определении. В вызове значение в скобках, "Анна", — это аргумент. Когда вы вызываете функцию, аргумент сохраняется в параметре, и после этого выполняется тело. При первом вызове name равно "Анна", при втором — "Том".
Эти два слова легко перепутать, поэтому запомните: параметр — это имя в определении, аргумент — значение в вызове.
У функции может быть несколько параметров, их разделяют запятыми. Аргументы попадают в параметры по порядку: первый аргумент в первый параметр, второй во второй и так далее:
def introduce(name, age):
print(f"Имя: {name}, возраст: {age}.")
introduce("Анна", 21)
introduce(21, "Анна")Выведется:
Имя: Анна, возраст: 21.
Имя: 21, возраст: Анна.Во втором вызове аргументы поменялись местами, поэтому 21 попало в name, а "Анна" — в age. Python не интересует, что значат значения, важен только порядок.
Каждому параметру нужен свой аргумент. Что, если одного не хватает?
def introduce(name, age):
print(f"Имя: {name}, возраст: {age}.")
introduce("Анна")Программа завершается ошибкой:
Traceback (most recent call last):
File "<exec>", line 4, in <module>
TypeError: introduce() missing 1 required positional argument: 'age'Сообщение об ошибке говорит, что в вызове не хватает одного аргумента, и называет параметр, который его не получил: 'age'. Positional («позиционный») означает, что аргументы попадают в параметры по своей позиции, то есть по порядку.
Теперь можно решить задачу из начала урока: одна функция, которая выводит площадь любого прямоугольника.
Задание
- 1
Создайте функцию
print_areaс двумя параметрами,widthиheight. В её теле выведитеwidth * height. - 2
Под функцией вызовите её с аргументами
5и6. Программа выведет30. - 3
Вызовите
print_areaещё два раза для двух других прямоугольников из начала урока: с аргументами10и5, а затем1и5. Программа выведет30,50и5, как и длинный код в начале, но теперь каждый прямоугольник занимает одну строку.