Почему ввод None в интерактивном Python ничего не печатает? [Дубликат]

1

Когда python запускается в интерактивном режиме, он будет оценивать выражения типа [] и печатать результат, преобразованный в строку или выполнение операторов, таких как i = 1. Поскольку утверждения не имеют значения, если они ничего не записывают на терминал, ничего не будет напечатано. Однако, когда я набирал None как выражение, Python ничего не печатает, даже 'None'. На первый взгляд я думал, что repr(None) вернет пустую строку, но я ошибся. Итак, почему Python делает специальный случай с None, ничего не печатая?

>>> None
>>>
>>> repr(None)
'None'
>>> str(None)
'None'
Теги:
interactive
repr

2 ответа

2

В интерактивном режиме результат любого выражения-выражения печатается только в том случае, если он не является None. Это поведение описано в документе.

Операторы выражения используются (в основном интерактивно) для вычисления и записи значения [...]

В интерактивном режиме, если значение не равно None, оно преобразуется в строку с использованием встроенной функции repr() и полученная строка записывается в стандартный вывод

Причина этого в том, что большинство функций, которые имеют побочные эффекты, возвращают None. Было бы неприятно, если бы None спама в консоли.

>>> lst.append(1)
None
>>> lst.append(2)
None
>>> lst.append(3)
None
>>> print('Please stop...')
Please stop...
None
  • 1
    Радостный пример.
  • 0
    Хороший снимок для того, чтобы принести мне документ, который я пропустил.
Показать ещё 1 комментарий
1

Потому что в противном случае все вызовы функций, которые ничего не вернули, будут печатать None.

  • 0
    Хорошая причина. Могу ли я сказать, что если python обнаруживает, что результат печати равен None , он просто пропускает печать приглашения?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню