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



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

ПРИМЕЧАНИЕ
В программах часто используется имя обобщенного параметра 
*args
для хранения произвольного набора позиционных аргументов .
Использование произвольного набора именованных аргументов
Иногда программа должна получать произвольное количество аргументов, но 
вы не знаете заранее, какая информация будет передаваться функции. В таких 
случаях можно написать функцию, получающую столько пар «ключ-значение», 
сколько указано в команде вызова. Один из возможных примеров — построение 
пользовательских профилей: вы знаете, что вы получите информацию о пользова-
теле, но не знаете заранее, какую именно. Функция 
build_profile()
в следующем 
примере всегда получает имя и фамилию, но также может получать произвольное 
количество именованных аргументов:
user_profile.py
def build_profile(first, last, **user_info):
"""Строит словарь с информацией о пользователе."""

user_info['first_name'] = first
user_info['last_name'] = last
return user_info
user_profile = build_profile('albert', 'einstein',
location='princeton',
field='physics')
print(user_profile)
Определение 
build_profile()
ожидает получить имя и фамилию пользователя, 
а также позволяет передать любое количество пар «имя-значение». Две звездочки 
перед параметром 
**user_info
заставляют Python создать пустой словарь с име-
нем 
user_info
и упаковать в него все полученные пары «имя-значение». Внутри 
функции вы можете обращаться к парам «имя-значение» из 
user_info
точно так 
же, как в любом словаре.
В теле 
build_profile()
в словарь 
user_info
добавляются имя и фамилия, пото-
му что эти два значения всегда передаются пользователем 

и они еще не были 
помещены в словарь. Затем словарь 
user_info
возвращается в точку вызова 
функции.


Хранение функций в модулях
163
Вызовем функцию 
build_profile()
и передадим ей имя 
'albert'
, фами-
лию 
'einstein'
и еще две пары «ключ-значение» — 
location='princeton'
и 
field='physics'
. Программа сохраняет возвращенный словарь в 
user_profile
и выводит его содержимое:
{'location': 'princeton', 'field': 'physics',
'first_name': 'albert', 'last_name': 'einstein'}
Возвращаемый словарь содержит имя и фамилию пользователя, а в данном случае 
еще и местонахождение и область исследований. Функция будет работать, сколько 
бы дополнительных пар «ключ-значение» ни было передано при вызове функции.
При написании функций допускаются самые разнообразные комбинации пози-
ционных, именованных и произвольных значений. Полезно знать о существова-
нии всех этих типов аргументов, потому что они часто будут встречаться вам при 
чтении чужого кода. Только с практическим опытом вы научитесь правильно ис-
пользовать разные типы аргументов и поймете, когда следует применять каждый 
тип; а пока просто используйте самый простой способ, который позволит решить 
задачу. С течением времени вы научитесь выбирать наиболее эффективный вариант 
для каждой конкретной ситуации.


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




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

    Басты бет