Дана функция def add_item(item, items=[]): items.append(item); return items. Что вернет второй вызов, если выполнить add_item('a'), а затем add_item('b')?

A['b']
B['a']
C['a', 'b']
D[]
Правильный ответ. Изменяемое значение по умолчанию создаётся один раз и затем переиспользуется между вызовами.

Разбор

Значение по умолчанию для items (пустой список) создается в момент определения функции, а не при каждом вызове. Поэтому add_item('a') добавляет 'a' в тот же список, который затем используется и во втором вызове. Второй вызов add_item('b') добавит 'b' в этот же список и вернет ['a', 'b']. Это частая ловушка со значениями по умолчанию.

Проверь себя · 1/3разбор после ответа
Дана функция def f(a, b, c): return a * 100 + b * 10 + c. Что вернет вызов f(1, c=3, b=2)?
Тренировать Python в Telegram

Ещё вопросы по теме «Функции и аргументы»