Значения параметров по умолчанию
В предыдущем упражнении вы видели, что вызов без нужного аргумента завершается ошибкой. Но часто есть значение, которое подходит в большинстве случаев, а другое мы хотим передавать лишь время от времени. Например, большинство людей заказывает кофе среднего размера. Для таких случаев у параметра может быть значение по умолчанию: после имени параметра напишите = и значение:
def order_coffee(drink, size="средний"):
print(f"{drink}, размер: {size}")
order_coffee("Латте", "большой")
order_coffee("Эспрессо")Выведется:
Латте, размер: большой
Эспрессо, размер: среднийКогда в вызове передан аргумент для size, функция использует его. Когда нет — использует значение по умолчанию "средний". Без значения по умолчанию второй вызов завершился бы ошибкой TypeError: order_coffee() missing 1 required positional argument: 'size'.
Обратите внимание: вокруг = у значения по умолчанию нет пробелов: size="средний", в отличие от создания переменной: size = "средний". С пробелами тоже заработало бы; просто так принято писать у программистов на Python.
Поскольку аргументы попадают в параметры по порядку, параметры со значениями по умолчанию ставят в конец. Тогда можно опустить последние аргументы, а переданные всё равно попадут в нужные параметры. Python даже не позволит поставить параметр без значения по умолчанию после параметра со значением по умолчанию: def order_coffee(size="средний", drink): завершится ошибкой SyntaxError: parameter without a default follows parameter with a default.
Задание
- 1
В нашем магазине большинство цен показано в евро, поэтому последний вызов передаёт только цену. Запустите программу: она выводит две цены, а затем завершается ошибкой. Задайте параметру
currencyзначение по умолчанию"EUR". Тогда последняя строка будетЦена: 25 EUR, а два других вызова по-прежнему выведут свои валюты. - 2
Под функцией
print_priceсоздайте функциюgreetс параметромname, значение по умолчанию которого —"посетитель". Функция выводит приветствие, напримерЗдравствуйте, Анна!. - 3
В конце программы вызовите
greetодин раз без аргумента и один раз со своим именем в качестве аргумента. Программа выведетЗдравствуйте, посетитель!, а затем приветствие с вашим именем.