При использовании именованных аргументов будьте внимательны — имена должны точно совпа-
140 Глава 8 • Функции
Значения по умолчанию
Для каждого параметра вашей функции можно определить значение по умолча-
нию. Если при вызове функции передается аргумент, соответствующий данному
параметру, Python использует значение аргумента, а если нет — использует зна-
чение по умолчанию. Таким образом, если для параметра определено значение
по умолчанию, вы можете опустить соответствующий аргумент, который обычно
включается в вызов функции. Значения по умолчанию упрощают вызовы функций
и проясняют типичные способы использования функций.
Например, если вы заметили, что большинство вызовов
describe_pet()
исполь-
зуется для описания собак, задайте
animal_type
значение по умолчанию
'dog'
.
Теперь в любом вызове
describe_pet()
для собаки эту информацию можно
опустить:
def describe_pet(pet_name, animal_type='dog'):
"""Выводит информацию о животном."""
print("\nI have a " + animal_type + ".")
print("My " + animal_type + "'s name is " + pet_name.title() + ".")
describe_pet(pet_name='willie')
Мы изменили определение
describe_pet()
и включили для параметра
animal_type
значение по умолчанию
'dog'
. Если теперь функция будет вызвана без указания
animal_type
, Python знает, что для этого параметра следует использовать значение
'dog'
:
I have a dog.
My dog's name is Willie.
Обратите внимание: в определении функции пришлось изменить порядок параме-
тров. Так как благодаря значению по умолчанию указывать аргумент с типом жи-
вотного не обязательно, единственным оставшимся аргументом в вызове функции
остается имя домашнего животного. Python интерпретирует его как позиционный
аргумент, и если функция вызывается только с именем животного, этот аргумент
ставится в соответствие с первым параметром в определении функции. Именно по
этой причине имя животного должно быть первым параметром.
В простейшем варианте использования этой функции при вызове передается
только имя собаки:
describe_pet('willie')
Вызов функции выводит тот же результат, что и в предыдущем примере. Един-
ственный переданный аргумент
'willie'
ставится в соответствие с первым па-
раметром в определении,
pet_name
. Так как для
animal_type
аргумент не указан,
Python использует значение по умолчанию
'dog'
. Для вывода информации о лю-
бом другом животном, кроме собаки, используется вызов функции следующего
вида:
describe_pet(pet_name='harry', animal_type='hamster')
Так как аргумент для параметра
animal_type
задан явно, Python игнорирует зна-
чение параметра по умолчанию.