Как правильно решается проблема изменяемых значений по умолчанию в Python функции
Python
Middle
Без компании
Как правильно решается проблема изменяемых значений по умолчанию в Python функции
Ответы
В Python аргументы по умолчанию вычисляются один раз при создании функции, а не при каждом вызове. Это приводит к неожиданному поведению при использовании изменяемых объектов (списки, словари и т.д.).
Правильное решение - использовать `None` в качестве значения по умолчанию и создавать новый изменяемый объект внутри функции:
```
def append_to(element, to=None):
if to is None:
to = []
to.append(element)
return to
```
Такой подход гарантирует, что при каждом вызове без аргумента `to` будет создаваться новый список. Это стандартный идиоматический способ решения проблемы в Python.