Когда python
запускается в интерактивном режиме, он будет оценивать выражения типа []
и печатать результат, преобразованный в строку или выполнение операторов, таких как i = 1
. Поскольку утверждения не имеют значения, если они ничего не записывают на терминал, ничего не будет напечатано. Однако, когда я набирал None
как выражение, Python ничего не печатает, даже 'None'
. На первый взгляд я думал, что repr(None)
вернет пустую строку, но я ошибся. Итак, почему Python делает специальный случай с None
, ничего не печатая?
>>> None
>>>
>>> repr(None)
'None'
>>> str(None)
'None'
В интерактивном режиме результат любого выражения-выражения печатается только в том случае, если он не является None
. Это поведение описано в документе.
Операторы выражения используются (в основном интерактивно) для вычисления и записи значения [...]
В интерактивном режиме, если значение не равно
None
, оно преобразуется в строку с использованием встроенной функцииrepr()
и полученная строка записывается в стандартный вывод
Причина этого в том, что большинство функций, которые имеют побочные эффекты, возвращают None
. Было бы неприятно, если бы None
спама в консоли.
>>> lst.append(1)
None
>>> lst.append(2)
None
>>> lst.append(3)
None
>>> print('Please stop...')
Please stop...
None
Потому что в противном случае все вызовы функций, которые ничего не вернули, будут печатать None
.
None
, он просто пропускает печать приглашения?