JuniorКодОчень частоЕщё не отвечали
Что выведет этот изменяемый аргумент по умолчанию?
Предскажите вывод этих двух вызовов.
def add(item, bucket=[]):
bucket.append(item)
return bucket
print(add(1))
print(add(2))
Определите вывод и объясните.
[1], затем [1, 2]. Список [] по умолчанию создаётся один раз, в момент определения функции, и переиспользуется между вызовами, поэтому состояние «протекает». Решение через сентинел: def add(item, bucket=None): bucket = [] if bucket is None else bucket.
- ✗Думать, что аргументы по умолчанию вычисляются заново при каждом вызове
- ✗Ожидать новый список на каждый вызов
- ✗Не знать решение через сентинел None
- →Почему аргументы по умолчанию вычисляются в момент определения, а не вызова?
- →Как именно паттерн с сентинелом
Noneэто исправляет?