← Все вопросы

Почему моя функция возвращает None, хотя я считаю результат?

Задан 1 месяц назад202 просмотров2 ответа
9

Написал функцию, которая складывает числа, печатаю её результат — а выводится None. Внутри функции всё считается правильно! Почему функция возвращает None и как сделать, чтобы она отдавала значение?

2 ответа

13
✓ Принятый ответ — помог автору

Если функция возвращает None, почти всегда причина одна: в ней нет return (или он не выполняется). Любая функция без явного return отдаёт None — это значение «ничего».

Ошибка — посчитали, но не вернули:

def add(a, b):
    result = a + b
    print(result)     # печатает, но не возвращает

x = add(2, 3)
print(x)              # None

Исправление — вернуть значение:

def add(a, b):
    return a + b

x = add(2, 3)
print(x)              # 5

Важно понимать разницу: print показывает значение на экране, а return отдаёт его обратно в программу. Это не одно и то же. Если внутри функции только print, то наружу всё равно уходит None.

Другие причины None:

  1. return стоит с неправильным отступом — внутри if, который не сработал, поэтому до него не дошли.
  2. Лишний перевод строки: написали return отдельно, без значения после него.
  3. Вернули результат метода, который сам возвращает None (return lst.sort()).

Правило: функция, от которой вам нужен результат, обязана return это значение.

5

Частая ловушка с условиями: return есть только в одной ветке.

def check(n):
    if n > 0:
        return "плюс"
    # если n <= 0 — функция молча вернёт None

Добавьте return для всех случаев (например, else: return "минус"), иначе при некоторых входных данных получите None.

Ваш ответ

Войдите, чтобы ответить на вопрос.