У меня проблема с питоном здесь. Если я передаю массив через рекурсивную функцию, которая добавляет что-то в массив при каждом его вызове, массив модифицируется в каждом случае
Код:
def test(n,myList):
if n>0:
myList.append("Test")
print ( "BEFORE CALL Instance ", n, myList )
test(n-1,myList)
print ( "AFTER CALL Instance ", n, myList )
else:
return
Выполнение через test(5,[])
Результаты:
BEFORE CALL Instance 5 ['Test']
BEFORE CALL Instance 4 ['Test', 'Test']
BEFORE CALL Instance 3 ['Test', 'Test', 'Test']
BEFORE CALL Instance 2 ['Test', 'Test', 'Test', 'Test']
BEFORE CALL Instance 1 ['Test', 'Test', 'Test', 'Test', 'Test']
AFTER CALL Instance 1 ['Test', 'Test', 'Test', 'Test', 'Test']
AFTER CALL Instance 2 ['Test', 'Test', 'Test', 'Test', 'Test']
AFTER CALL Instance 3 ['Test', 'Test', 'Test', 'Test', 'Test']
AFTER CALL Instance 4 ['Test', 'Test', 'Test', 'Test', 'Test']
AFTER CALL Instance 5 ['Test', 'Test', 'Test', 'Test', 'Test']
Актуальная проблема:
Каждая дочерняя функция изменяет массив во всех родительских функциях. Как я могу предотвратить это?
Копирование списка в новый и его изменение приводит к тому же выводу, что и выше
myListNew=myList
myListNew.append("Test")