Можем ли мы в аргументы функции передавать список и потом его там внутри изменять? Что произойдёт со старым списком?

В Python можно задать дефолтное значение аргумента функции списком, например:

Короткий ответ

Что ответить на собеседовании

В Python можно задать дефолтное значение аргумента функции списком, например:

Подробный разбор

Ответ с пояснениями

В 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

Так каждый вызов функции будет работать с новым списком, что предотвращает нежелательное накопление данных.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее