Что возвращает print: функция вывода и её возвращаемое значение

Раздел: Основы Python -> Функция print

Основное: print возвращает None

Что на самом деле возвращает функция print?

Функция print() в Python предназначена для вывода данных в поток вывода (обычно в консоль) и всегда возвращает None. Это важно понимать, чтобы избежать ошибок при попытке использовать результат вызова print как значение.

result = print("Привет, мир!")
print(result)  # Выведет: None

Print set python (вывод множества в python)

Привет, мир!
None

Print python перевод (перевод строки в print python)

Присваивание результата print переменной приводит к тому, что переменная получает значение None. Никакого другого возвращаемого значения функция не даёт.

Типичная ошибка: программисты, особенно начинающие, пытаются использовать результат print в условных выражениях или присваивать его для дальнейшего использования, ожидая строку или число. Это приводит к неожиданному поведению, так как None в логическом контексте интерпретируется как False.

Варианты использования и сопутствующие вопросы

Как проверить, что print возвращает None?

Проще всего использовать функцию type() или сравнение с None.

x = print("Проверка")
print(type(x))          # <class 'NoneType'>
print(x is None)        # True

Python print отступ (вывод с отступами в python)

Проверка
<class 'NoneType'>
True

Print random python (вывод случайного числа в python)

Проблема: если не знать об этом, можно подумать, что print возвращает выводимую строку.

Можно ли использовать print в условном операторе?

Можно, но осторожно: None воспринимается как False. Такой код выполнится, но скорее всего не так, как ожидалось.

if print("Условие"):
    print("Это не выполнится")
else:
    print("Выполнится, так как print вернул None")

Python print текст и переменная (вывод текста и переменной в python)

Условие
Выполнится, так как print вернул None

Python how print (как выводить в python)

Совет: для явной проверки лучше не полагаться на возвращаемое значение print, а выводить отдельным шагом.

Как получить строку, которую хотелось бы вывести, но не выводить её сразу?

Используйте f-строки, str() или format(). Они возвращают строку, которую затем можно как сохранить, так и вывести.

name = "Анна"
greeting = f"Привет, {name}!"
print(greeting)  # выводит
# greeting теперь содержит строку, а не None

Python print несколько строк (многострочный вывод в python)

Привет, Анна!

Print python синтаксис (синтаксис вывода в python)

Ошибка новичков: запись message = print(f"..."), что даёт None, а затем попытка использовать message.

Как вывести и одновременно сохранить результат?

Сначала сохраните строку в переменную, затем выведите её - это и будет правильным подходом.

text = "Некоторое сообщение"
print(text)
# теперь text доступен для дальнейшей работы

Python echo print (аналог echo в python (print))

Некоторое сообщение

Python console print (вывод в консоль в python)

Если нужно вывести и вернуть значение из функции, используйте отдельный return.

Что возвращает print при использовании параметра file?

Даже если вывод направляется в файл, print по-прежнему возвращает None. Параметр file не меняет возвращаемого значения.

import io
buf = io.StringIO()
result = print("В буфер", file=buf)
print(result)            # None
print(buf.getvalue())    # "В буфер
"

Python вывод в 1 строку (вывод в одну строку в python)

None
В буфер

Цель: запись в файл без создания возвращаемого значения. Если требуется вернуть записанную строку, нужно читать из файла/буфера.

- Module print python (модуль print в python (функция))
- оператор end в python (параметр end в функции print python)
- перенос print python (перенос строки в print python)

Расширенные примеры работы с возвращаемым значением print

Ниже приведены неочевидные случаи, где знание того, что print возвращает None, помогает избежать ошибок и лучше понять поведение кода.

Пример 1: Присваивание и проверка None в цепочке вызовов

Пример
def noisy_print(value):
    print("Выводим:", value)
    return len(value) if isinstance(value, str) else value

result = noisy_print("Тест")
print("Длина:", result)  # 4

# Сравним с простым print
data = print("Просто печать")
print("data:", data)     # None, хотя мы могли ожидать строку
Выводим: Тест
Длина: 4
Просто печать
data: None

Пояснение: если нужна функция, которая и выводит, и возвращает значение, её нужно написать самостоятельно. Встроенный print так не умеет.

Пример 2: Список из вызовов print (list comprehension)

Пример
results = [print(f"Число {x}") for x in range(3)]
print("Результаты:", results)
Число 0
Число 1
Число 2
Результаты: [None, None, None]

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

Пример 3: Использование print в лямбда-функции

Пример
func = lambda x: print(x * 2)
result = func(5)
print(result)  # None
10
None

Пояснение: лямбда, содержащая print, возвращает None, что часто не учитывается. Правильнее возвращать результат вычислений, а print выносить отдельно.

Пример 4: Сравнение с функцией input()

Пример
name = input("Введите имя: ")
# input возвращает строку, print - None
print("Привет,", name)
result = print("Конец& quot;)
print(type(result))   # <class 'NoneType'>
Введите имя: Иван
Привет, Иван
Конец 
<class 'NoneType'>

Пояснение: многие путают print и input: input возвращает введённую строку, print - всегда None.

Пример 5: Логирование вывода через декоратор

Пример
import functools

def log_print(func):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        result = func(*args, **kwargs)
        print(f"Функция {func.__name__} вернула {result}")
        return result
    return wrapper

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

add(3, 5)  # вызов print внутри декоратора не связан с возвратом None
Функция add вернула 8

Пояснение: декоратор дополнительно выводит информацию, но возвращаемое значение оригинальной функции остаётся нетронутым. Если бы мы использовали print(result) и затем пытались вернуть результат print, это бы сломало логику.

Что возвращает print в Python - comments

En
Print python возвращает (python)