Передача списка
161
Теперь команду
print
можно заменить циклом, который перебирает список топ-
пингов и выводит описание заказанной пиццы:
def make_pizza(*toppings):
"""Выводит описание пиццы."""
print("\nMaking a pizza with the following toppings:")
for topping in toppings:
print(f"- {topping}")
make_pizza('pepperoni')
make_pizza('mushrooms', 'green peppers', 'extra cheese')
Функция реагирует соответственно независимо от того, сколько значений она
получила — одно или три:
Making a pizza with the following toppings:
- pepperoni
Making a pizza with the following toppings:
- mushrooms
-
green peppers
-
extra cheese
Этот синтаксис работает независимо от количества аргументов, переданных функ-
ции.
Позиционные аргументы с произвольными
наборами аргументов
Если вы хотите, чтобы функция могла вызываться
с разными количествами аргу-
ментов, параметр для получения произвольного количества аргументов должен
стоять на последнем месте в определении функции. Python сначала подбирает со-
ответствия для позиционных и именованных аргументов, а потом объединяет все
остальные аргументы в последнем параметре.
Например, если функция должна получать размер пиццы, этот параметр должен
стоять в списке до параметра
*toppings
:
def make_pizza(size, *toppings):
"""Выводит описание пиццы."""
print(f"\nMaking a {size}-inch pizza with the following toppings:")
for topping in toppings:
print(f"- {topping}")
make_pizza(16, 'pepperoni')
make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')
В определении функции Python сохраняет первое полученное значение в параметре
size
. Все остальные значения, следующие за ним, сохраняются в кортеже
toppings
.
В вызовах функций на первом месте располагается аргумент для параметра
size
,
а за ним следуют сколько угодно дополнений.
162
Глава 8 •
Функции
В итоге для каждой пиццы указывается размер и количество дополнений, и каждый
фрагмент информации выводится в положенном месте: сначала размер, а потом
топпинги:
Making a 16-inch pizza with the following toppings:
- pepperoni
Making a 12-inch pizza with the following toppings:
- mushrooms
- green peppers
- extra cheese
Достарыңызбен бөлісу: