Почему в качестве значений по умолчанию в Python функции не рекомендуют использовать изменяемые типы

Python Middle Без компании
Почему в качестве значений по умолчанию в Python функции не рекомендуют использовать изменяемые типы
Ответы
Использование изменяемых объектов (списков, словарей) в качестве значений по умолчанию может привести к неожиданному поведению, так как они создаются только один раз при определении функции и сохраняются между вызовами. Это может вызвать нежелательное разделение состояния между разными вызовами функции. Пример проблемы: ``` def add_item(item, items=[]): items.append(item) return items print(add_item(1)) # [1] print(add_item(2)) # [1, 2] - неожиданно! ``` Правильный подход - использовать None и создавать изменяемый объект внутри функции: ``` def add_item(item, items=None): if items is None: items = [] items.append(item) return items ``` Это гарантирует, что каждый вызов получит новый список.