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