None вместо единицы

На питоне не мог разобраться, почему там в выводе стоит то None, хотя если логически подумать, то эм, единица нет?

def func(y):
    if y==1:
        return y
    else:
        y-=1
        func(y)

print(func(2))

Ответы (1 шт):

Автор решения: Алексей Белкин

print() - печатает на экран то, что ей передали. Ваша функция: "def func(y)" работает рекурсивно:

  1. 2 !=1 --> идем в блок "else". Тут вычитаем 1 и вызываем снова функцию
  2. 1 ==1 --->возвращаем значение y (В вашем случае это 1)
  3. Возвращаемое значение из п.2 возвращается в блок "else" (в место вызова п.1) там Ваша функция ничего не возвращает (значит она стала процедурой, которая возвращает None), а просто заканчивает свое выполнение. Соответственно print() печатает результат, отчет работы функции (которая без return стала процедурой) "def func(y)", который вернул в точку вызова None. Поэтому print() печатет "None"

Правка для @Эникейщик:

Правка для @Эникейщик:

→ Ссылка