Middle
28
Можно ли в Python задать дефолтное значение аргумента функции списком и какие проблемы это может вызвать?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Python можно задать дефолтное значение аргумента функции списком, например:
def func(a, lst=[]):
lst.append(a)
return lst
Однако это может привести к неожиданному поведению, потому что дефолтные значения вычисляются один раз при определении функции, а не при каждом вызове. В результате, если изменять этот список внутри функции, изменения сохранятся между вызовами:
print(func(1)) # [1]
print(func(2)) # [1, 2] — список не пустой, а накопленный
Чтобы избежать этой проблемы, обычно используют значение по умолчанию None и внутри функции создают новый список:
def func(a, lst=None):
if lst is None:
lst = []
lst.append(a)
return lst
Так каждый вызов функции будет работать с новым списком, что предотвращает нежелательное накопление данных.