def qwe(lst, new = []): for el in lst: qwe(el) if isinstance(el, list) else new.append(el) return new При таком раскладе получаю: a = qwe([1, [2, 3, [4, 5]]]) print a [1, 2, 3, 4, 5]
def qwe(lst): new = [] for el in lst: qwe(el) if isinstance(el, list) else new.append(el) return new a = qwe([1, [2, 3, [4, 5]]]) print a [1]
def qwe(lst): global new new = [] for el in lst: qwe(el) if isinstance(el, list) else new.append(el) return new a = qwe([1, [2, 3, [4, 5]]]) print a [4, 5]
Почему так происходит?
Особенно между первым и вторым вариантом разница. Почему при таком же рекурсивном вызове функция с аргументом по умолчанию ведет себя отлично от функции, создающей пустой список в теле?
