Sobes.tech
Back to questions
Junior — Middle
52

Какое поведение ожидается, если в функции задать в качестве значения по умолчанию для аргумента пустой список?

Answer from AI

sobes.tech AI

Если в Python задать в качестве значения по умолчанию для аргумента функции пустой список ([]), этот список будет создан один раз при определении функции и использоваться во всех последующих вызовах без нового создания. Это значит, что если внутри функции изменять этот список (например, добавлять элементы), изменения сохранятся между вызовами функции.

Пример:

def append_to_list(value, my_list=[]):
    my_list.append(value)
    return my_list

print(append_to_list(1))  # Выведет: [1]
print(append_to_list(2))  # Выведет: [1, 2], а не [2]

Чтобы избежать такого поведения, обычно используют значение по умолчанию None и внутри функции создают новый список:

def append_to_list(value, my_list=None):
    if my_list is None:
        my_list = []
    my_list.append(value)
    return my_list

Это гарантирует, что при каждом вызове функции будет новый список.