Не понимаю работу функции в python
в данном примере, функция принимает матрицу list[list[int]] и разворачивает ее по спирали с левого верхнего угла в list[int] и отдает его через output когда функция завершает работу.
в примере решения указан данный вариант, но он возвращает None за место значения.
def traverse_matrix(matrix: list[list[int]], output: list[int] = None) -> list[int]:
if output is None:
output = []
if not len(matrix):
return output
matrix = list(zip(*matrix[::-1]))
output.extend(matrix[0][::-1])
traverse_matrix(matrix[1:], output)
у меня получилось вернуть output, путем данной манипуляции.
def traverse_matrix(matrix: list[list[int]], output: list[int] = None) -> list[int]:
if output is None:
output = []
if not len(matrix):
return
matrix = list(zip(*matrix[::-1]))
output.extend(matrix[0][::-1])
traverse_matrix(matrix[1:], output)
return output
Обьясните пожалуйста, почему в первом примере, функция не прерывает работу когда попадет на return, а после продолжает что то делать. Первый вариант видимо, когда то работал (возможно).
Как работают эти функции?