Не выводится переменная

Почему у меня тут не выводится переменная number? Не могу понять

def rec():
    number = int(input())
    if number == 0:
        return
    return rec()
    print(number)
rec()

Хотя в таком исполнении она выводится:

def reverse():
    number = int(input())
    if number != 0:
        reverse()
    print(number)
reverse()

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

Автор решения: AivanF.

Оператор return завершает текущее выполнение функции и производит возвра значения в точку вызова, соответственно, print и что угодно ещё после ретёрна не работает. Варианта решения есть разные.

Либо печатайте перед возвратом значения:

def rec():
    number = int(input())
    if number == 0:
        return
    print(number)
    return rec()

rec()

Либо, что лучше, печатайте результат выполнения функции:

def rec():
    number = int(input())
    if number == 0:
        return
    return rec()

print(rec())

Лучший это вариант потому, что функции должны делать что-то одно конкретное, в данном случае это запрос на ввод числа, а отображение этого числа уже отдельная задача.

Кстати, задачу проще решить без рекурсии:

def rec():
    number = 0
    while number == 0:
        number = int(input())
    return number

print(rec())
→ Ссылка
Автор решения: T0kua

После оператора return функция прекращает работу, как break;, но только возвращает информацию.

→ Ссылка