Инициализация списка как аргумент по умолчанию
def add(mass=[]):
mass.append(1)
return mass
add()
print(add())
>>> [1, 1]
Почему это работает именно так? Где хранится список и почему он не обнуляется?
Ответы (2 шт):
Аргумент по умолчанию создается только один раз при запуске программы и при каждом вызове функции мы ссылаемся на один и тот же участок в памяти.
https://docs-python.ru/tutorial/ispolzovanie-spiskov-list-python/neozhidannoe-povedenie-spiskov/
В данном случае при определении функции определяется переменная mass = []
в дальнейшем когда ты вызываешь метод без параметров, то ты все свои операции производишь над этой переменной
Если ты хочешь, что бы она обнулялась всегда, когда ты вызываешь метод без параметров, то лучше сделать так:
def add(mass=None):
if mass is None:
mass = []
mass.append(1)
return mass
подробней можешь почитать поискав по python mutable default argument