Почему print выводит None в конце — откуда берётся лишний None?
Запускаю программу, и после нужного вывода печатается ещё None отдельной строкой. Я не просил выводить None! Откуда он берётся при использовании print и как убрать этот лишний None?
1 ответ
Лишний 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 — печатать их результат не нужно.