Я изучаю Python, и у меня проблема с аргументами по умолчанию. Я знаю, что использование изменяемого списка типа списка в аргументе по умолчанию нехорошо, потому что оно сохраняет значение между вызовами. Вот мой пример:
Код: Выделить всё
def append_to_list(value, my_list=[]):
my_list.append(value)
return my_list
# First call
result1 = append_to_list(1)
print(result1) # Output: [1]
# Second call
result2 = append_to_list(2)
print(result2) # Output: [1, 2]
Я понимаю, почему это происходит. Python каждый раз повторно использует один и тот же список. Люди говорят, что мне следует использовать None и проверять внутри функции, вот так:
Код: Выделить всё
def append_to_list(value, my_list=None):
if my_list is None:
my_list = []
my_list.append(value)
return my_list
Это работает нормально, но я не хочу менять аргумент по умолчанию на None. Я хочу по-прежнему использовать my_list=[], но каким-то образом заставить Python сбрасывать его после каждого вызова.
Можно ли сделать это в Python? Может быть, с какой-то хитростью или чем-то еще? Спасибо за помощь!
Подробнее здесь:
https://stackoverflow.com/questions/792 ... -in-python