为什么print不是python中的函数?

时间:2010-12-10 22:35:21

标签: python

为什么print是python中的关键字而不是函数?

6 个答案:

答案 0 :(得分:12)

因为Guido决定他犯了一个错误。 :)

它已被纠正:尝试Python 3,它专门用section of its release notes来描述对函数的更改。

有关整个背景,请参阅PEP 3105及其参考资料部分提供的几个链接!

答案 1 :(得分:9)

print 在Python中的声明,因为它是ABC中的一个声明,是Python的主要灵感(尽管它在那里被称为WRITE)。这反过来可能有一个陈述而不是一个功能,因为它是一种教学语言,因此受到基本的启发。另一方面,Python不仅仅是一种教学语言(尽管它也很好)。

但是,现在print 是一个功能。是的,在Python 2中,你可以做到

from __future__ import print_function

你们都已经准备好了。从Python 2.6开始工作。

答案 2 :(得分:2)

现在它是Python 3中的一个函数。

答案 3 :(得分:1)

Python 2.x中的print语句具有一些特殊语法,这些语法不适用于普通函数。例如,您可以使用尾随,来抑制最终换行的输出,也可以使用>>将输出重定向到文件。但所有这一切对于Guido van Rossum本人来说都没有足够的说服力来保持声明 - 他将print转变为Python 3.x中的一个函数。

答案 4 :(得分:1)

一个答案来自我对print陈述的理解,但不一定来自官方的Python历史......

Python在某种程度上是脚本语言。现在,有很多“脚本语言”的定义,但我在这里使用的是:一种用于有效使用短程序或交互式程序的语言。这些语言倾向于允许单行程序而没有过多的样板;使键盘输入更容易(例如,通过避免过多的标点符号);并为常见任务提供内置语法(可能以牺牲纯度为代价)。在Python的情况下,打印值是一件非常常见的事情,特别是在交互模式下。要求print成为一个功能似乎在这里不必要的不​​方便。使用特殊语法可以显着降低错误风险,99%的时间都是正确的。

答案 5 :(得分:0)

我会想到这个:

在Python 2.x中print不是错误的陈述,或者因为打印到stdout是一件基本的事情。其他所有事情都经过深思熟虑,或至少可以理解的原因是这种秩序的错误看起来很奇怪。如果与stdout进行通信已经被认为是如此基本,那么与stdin进行通信必须同样重要,但input()是一个功能。

如果您查看不是表达式的list of reserved keywordslist of statementsprint明显突出,这是另一个提示,必须有非常具体的原因。

我认为print 是一个语句而不是表达式,以避免input()中的安全漏洞。请记住,Python2中的input()会评估用户输入stdin的内容。如果用户键入print aa包含所有密码的列表,那将是安静的灾难。

显然,input()评估表达式的能力被认为比print作为普通的内置函数更重要。