М97 Изучаем Python: программирование игр, визуализация данных, веб-приложения



Pdf көрінісі
бет118/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   114   115   116   117   118   119   120   121   ...   334
Байланысты:
Изучаем Python

УПРАЖНЕНИЯ
8.9. Сообщения:
создайте список с серией коротких сообщений. Передайте список функ-
ции 
show_messages()
, которая выводит текст каждого сообщения в списке.
8.10. Отправка сообщений:
начните с копии вашей программы из упражнения 8.9. На-
пишите функцию 
send_messages()
, которая выводит каждое сообщение и перемещает его 
в новый список с именем 
sent_messages
. После вызова функции выведите оба списка и убе-
дитесь в том, что перемещение прошло успешно.
8.11. Архивированные сообщения:
начните с программы из упражнения 8.10. Вызовите 
функцию 
send_messages()
для копии списка сообщений. После вызова функции выведите 
оба списка и убедитесь в том, что в исходном списке остались все сообщения.
Передача произвольного набора аргументов
В некоторых ситуациях вы не знаете заранее, сколько аргументов должно быть 
передано функции. К счастью, Python позволяет функции получить произвольное 
количество аргументов из вызывающей команды.
Для примера рассмотрим функцию для создания пиццы. Функция должна полу-
чить набор топпингов к пицце, но вы не знаете заранее, сколько топпингов закажет 
клиент. Функция в следующем примере получает один параметр 
*toppings
, но этот 
параметр объединяет все аргументы, заданные в командной строке:
pizza.py
def make_pizza(*toppings):
"""Вывод списка заказанных топпингов."""
print(toppings)
make_pizza('pepperoni')
make_pizza('mushrooms', 'green peppers', 'extra cheese')
Звездочка в имени параметра 
*toppings
приказывает Python создать пустой 
кортеж с именем 
toppings
и упаковать в него все полученные значения. Резуль-
тат команды 
print
в теле функции показывает, что Python успешно справляет-
ся и с вызовом функции с одним значением, и с вызовом с тремя значениями. 
Разные вызовы обрабатываются похожим образом. Обратите внимание: Python 
упаковывает аргументы в кортеж даже в том случае, если функция получает всего 
одно значение:
('pepperoni',) 
('mushrooms', 'green peppers', 'extra cheese')


Передача списка
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


Достарыңызбен бөлісу:
1   ...   114   115   116   117   118   119   120   121   ...   334




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет