← Все вопросы

Почему print выводит None в конце — откуда берётся лишний None?

Задан 20 месяцев назад893 просмотров1 ответ
8

Запускаю программу, и после нужного вывода печатается ещё None отдельной строкой. Я не просил выводить None! Откуда он берётся при использовании print и как убрать этот лишний None?

1 ответ

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

Лишний None почти всегда появляется, когда вы печатаете результат функции, которая ничего не возвращает. Функция без return (или метод вроде .sort(), .append()) отдаёт None, а вы оборачиваете её в print — вот None и выводится.

Пример 1 — печать функции, которая сама печатает:

def show(x):
    print(x)        # уже выводит

print(show(5))      # печатает 5, а потом ещё None

Исправление — не оборачивать в print:

show(5)             # просто 5

Пример 2 — печать метода, меняющего объект на месте:

nums = [3, 1, 2]
print(nums.sort())  # None! sort() возвращает None

Правильно:

nums.sort()
print(nums)         # [1, 2, 3]

Как понять, кто виноват: посмотрите, что именно стоит внутри print(...). Если это вызов функции/метода, проверьте, возвращает ли он значение. Методы, которые «делают действие» (sort, append, reverse, update, add), обычно возвращают None — печатать их результат не нужно.

Ваш ответ

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