Итоги
В этом уроке вы узнали, что:
- Функция — это именованный кусок кода, который вы пишете один раз и можете выполнять сколько нужно раз. Благодаря функциям не приходится повторять код, а когда вы меняете функцию, изменение действует везде, где она используется.
- Функцию определяют с помощью ключевого слова
def, имени, скобок с параметрами, двоеточия и тела с отступом:def print_area(width, height):. Одно определение ничего не запускает. - Функцию вызывают по имени и со скобками:
print_area(5, 6). Функцию нужно определить до вызова, иначе будетNameError. - Параметр — это имя в определении, аргумент — значение в вызове. Аргументы попадают в параметры по порядку. Недостающий аргумент приводит к
TypeError, если только у параметра нет значения по умолчанию:def print_price(price, currency="EUR"):. returnвозвращает значение в место вызова, поэтому вызов можно использовать как значение:print(add(2, 3)),total = add(2, 3) * 2.print()только показывает значение; программа не может с ним работать. Функция безreturnвозвращаетNone. Функция, которая что-то вычисляет, должна возвращать результат.returnсразу завершает функцию, и остальная её часть не выполняется. С условиями побеждает первый выполнившийсяreturn.- Переменные, созданные внутри функции, и её параметры локальные: они существуют только внутри этой функции. Значения попадают в функцию через параметры, а выходят с помощью
return. - Функция может получить список, пройти по нему циклом и вернуть результат.
returnставят после цикла, с таким же отступом, как уfor.
В следующем уроке, «Словари», вы научитесь хранить связанные значения, например имя и возраст человека, в одном значении.
Задание
- 1
Потренируемся. Напишите функцию
cart_totalс двумя параметрами:prices(список цен) иdiscountсо значением по умолчанию0. Функция возвращает сумму цен минус скидку. Выведитеcart_total(cart)иcart_total(cart, 50). Программа выведет280и230. - 2
Напишите функцию
format_priceс параметромprice, которая возвращает цену как текст с валютой, например"230 EUR"для230. С её помощью выведите итоговую сумму со скидкой и подписью:print(f"К оплате: {format_price(cart_total(cart, 50))}"). Python сначала вызываетcart_totalи передаёт значение, которое она вернула, вformat_price. Программа выведетК оплате: 230 EUR.