Что будет если в функции дефолтный параметром объявить пустой список
Python
Senior
Без компании
Что будет если в функции дефолтный параметром объявить пустой список
Ответы
В 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
```
Так каждый вызов получит новый список. Это стандартный паттерн для избежания проблем с изменяемыми дефолтными параметрами.