Ваша функция нигде не имеет оператора return
.Если функция не return
ничего явно указывает, она всегда возвращает None
.
И почти наверняка намеренно, что эта функция ничего не возвращает.
Обратите внимание, чтофункция изменяет свой аргумент на месте:
>>> a = [7,1,3,5,9,2,3]
>>> insertion_sort(a)
>>> a
[1, 2, 3, 3, 5, 7, 9]
В Python это идиоматично для функций, которые делают это, чтобы ничего не возвращать.Посмотрите, например, встроенные методы, такие как list.sort
и list.append
.
И обратите внимание, что в цитируемом видео , это именно то, что делает инструктор - они не print
результат insertion_sort
, они просто вызывают его, а затем смотрят на значение переменной.
Кроме того, в общем, функции, которые изменяют значение на месте, как этот,возьмите императивный глагол, как метод списка sort
, в то время как функции, которые оставляют аргумент без изменений, но возвращают преобразованное значение, принимают прошедшее причастие, как встроенная функция sorted
.
Итак, если бы эта функция была названа insertion_sorted
, программисты Python ожидали бы, что она оставит свой аргумент один и возвратит новый отсортированный список;так как он называется insertion_sort
, они будут ожидать, что он отсортирует свой аргумент на месте и ничего не вернет.