Почему печать не является функцией в python?

Почему print ключевое слово в python, а не функция?

Ответ 1

Потому что Гвидо решил, что совершил ошибку.:)

С тех пор было исправлено: попробуйте Python 3, который посвящает раздел его примечаний к выпуску для описания изменения функции.

Для всего фона см. PEP 3105 и несколько ссылок, приведенных в разделе "Ссылки"!

Ответ 2

print был оператором в Python, потому что это было утверждение в ABC, основное вдохновение для Python (хотя оно называлось WRITE там). Это, в свою очередь, вероятно, имело утверждение вместо функции, поскольку это был учебный язык и как таковой вдохновлял основной. Python, с другой стороны, оказался не просто языком обучения (хотя это тоже хорошо).

Однако в настоящее время print есть функция. Да, в Python 2 вы также можете сделать

from __future__ import print_function

и все вы настроены. Работает с Python 2.6.

Ответ 3

Теперь это функция в Python 3.

Ответ 4

Оператор print в Python 2.x имеет специальный синтаксис, который не будет доступен для обычной функции. Например, вы можете использовать trailing , для подавления вывода окончательной новой строки или использовать >> для перенаправления вывода в файл. Но все это было недостаточно убедительно даже для самого Guido van Rossum, чтобы сохранить его утверждение - он превратил print в функцию в Python 3.x.

Ответ 5

Ответ, который опирается на то, что я ценю в инструкции print, но не обязательно из официальной истории Python...

Python - это, в некоторой степени, язык сценариев. Теперь существует множество определений "язык сценариев", но тот, который я буду использовать здесь, - это язык, предназначенный для эффективного использования коротких или интерактивных программ. Такие языки, как правило, допускают однострочные программы без чрезмерного шаблона; упростить ввод клавиатуры (например, избегая чрезмерной пунктуации); и обеспечить встроенный синтаксис для общих задач (удобство при возможном расходе чистоты). В случае Python печать значения - очень обычная вещь, особенно в интерактивном режиме. Требование print быть функцией кажется излишне неудобным здесь. Там значительно ниже риск ошибки со специальным синтаксисом, который делает правильную вещь в 99% случаев.

Ответ 6

Я напишу свои мысли по этому поводу:

В Python 2.x print не является ошибкой, или потому, что печать на stdout - это такая основная вещь. Все остальное настолько продумано или по крайней мере понятно, что ошибка этого порядка кажется странной. Если бы связь с stdout была бы такой базовой, общение с stdin было бы столь же важно, но input() является функцией.

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

Я думаю, что print должен был быть выражением, а не выражением, чтобы избежать нарушения безопасности в input(). Помните, что input() в Python2 оценивает все, что пользователь вводит в stdin. Если пользователь, набравший print a и a, содержит список всех паролей, это было бы катастрофично.

По-видимому, способность input() оценивать выражения считалась более важной, чем print, являющейся нормальной встроенной функцией.