Вопрос-Ответ

Why does the print function return None?

Почему функция print возвращает None?

Почему отображается outer print в этом коде None?

>>> a = print(print("Python"))
Python
None
>>> print(type(a))
<class 'NoneType'>

Почему здесь a становится None, хотя hey печатается (а не None)?

>>> a = print("hey")
hey
>>> type(a)
<class 'NoneType'>

Смотрите также: Какова цель оператора return? Чем это отличается от печати?

Переведено автоматически
Ответ 1

print() Функция возвращает None. Вы печатаете это возвращаемое значение.

Это потому, что print() ей нечего возвращать; ее задача - записать аргументы, после преобразования их в строки, в файловый объект (который по умолчанию имеет значение sys.stdout). Но все выражения в Python (включая вызовы) выдают значение, поэтому в таких случаях создается None.

Похоже, вы путаете печать с возвратом. Интерактивный интерпретатор Python также выполняет печать; он печатает результат выражений, выполняемых непосредственно в командной строке, при условии, что они не выдают None:

>>> None
>>> 'some value'
'some value'

Строка была передана (напечатана) на ваш терминал, в то время как None этого не было.

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

>>> from io import StringIO
>>> output = StringIO()
>>> print('Hello world!', file=output)
>>> output.getvalue()
'Hello world!\n'

print() Вызов функции не произвел вывод на терминале, а вернул результат, None который затем не был повторен.

python python-3.x