Почему print ключевое слово в python, а не функция?
Почему печать не является функцией в 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, являющейся нормальной встроенной функцией.