Аргументы по умолчанию: как и когда
Аргумент по умолчанию позволяет вызвать функцию без части параметров — они возьмут заранее заданное значение.
Как задать
В определении функции параметру присваивают значение через =. Тогда при вызове его можно не указывать — подставится значение по умолчанию.
def greet(name, greeting='Привет'):
print(greeting, name)
greet('Аня') # Привет Аня
greet('Аня', 'Здравствуй') # Здравствуй Аня
Когда удобно
Значения по умолчанию делают функцию гибкой: обязательные параметры задаёте всегда, а необязательные — только когда нужно отклониться от привычного. Это упрощает вызовы в типичных случаях.
Опасная ловушка
Никогда не используйте изменяемое значение (список, словарь) как значение по умолчанию — оно создаётся один раз и «запоминается» между вызовами, что приводит к странным багам. Если нужен список по умолчанию, ставьте None, а внутри создавайте новый список.
Частые вопросы
Можно ли смешивать обязательные и необязательные? Да, но параметры с умолчанием идут после обязательных.
Почему нельзя список по умолчанию? Он общий для всех вызовов; используйте None и создавайте список внутри.
Начать игру бесплатно