Sobes.tech
Назад к вопросам
Junior — Middle
80

Можно ли задать список как значение по умолчанию для параметра функции?

Ответ от нейросети

sobes.tech AI

В 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

print(add_item(1))  # [1]
print(add_item(2))  # [2]

Таким образом, технически задать список как значение по умолчанию можно, но делать это напрямую не рекомендуется из-за особенностей работы Python с изменяемыми объектами.