为什么print
是python中的关键字而不是函数?为什么print不是python中的函数?
回答
因为Guido已经决定他犯了一个错误。 :)
它已经得到纠正:尝试Python 3,它专用section of its release notes来描述对函数的更改。
整个背景,请参阅PEP 3105和其参考文献部分提供的几个链接!
我还没有用Python 3修饰过。 print关键字仍然工作吗? – user538442 2010-12-10 22:38:49
不是。现在这是一个功能。在简单的情况下,'print'foo“'变成'print(”foo“)' – 2010-12-10 22:43:46
在”now a function“中更正:) – 2010-12-10 22:43:59
现在是在Python 3
似乎有些奇怪,它需要10年以上的时间才能纠正它 – user538442 2010-12-10 22:38:09
@user:这不一定是时间问题,而是一个兼容性问题,无论是向前还是向后。 – 2010-12-10 22:56:20
@ user538442:向后兼容性是一个婊子:( – delnan 2010-12-10 22:56:20
功能在Python 2.x中的print
语句具有一些特殊的语法,这将不是一个普通的函数可用。例如,您可以使用尾部,
来抑制最终换行符的输出,或者可以使用>>
将输出重定向到文件。但是,所有这些都不足以让Guido van Rossum自己保留一个声明 - 他在Python 3.x中将print
转换为函数。
呃,现在这是开始有意义的。 – user538442 2010-12-10 22:39:31
因此,额外的功能现在丢失,但如果尾随和>> – user538442 2010-12-10 22:39:59
它仍然存在,但现在你使用'end ='和'file ='关键字参数,而不是特殊的语法。 – dan04 2010-12-10 22:45:11
print
为 Python中的语句,因为它是在美国广播公司,为Python的主要灵感的声明(尽管它被称为WRITE
那里)。这反过来可能有一个声明,而不是一个功能,因为它是一种教学语言,因此受到基本的启发。另一方面,Python原来不仅仅是一种教学语言(尽管它也很好)。
不过,现在的print
是的一个函数。是的,在Python 2中,你也可以做
from __future__ import print_function
并且你已经设置好了。自Python 2.6起作用。
,从我欣赏对print
语句,但不一定是从Python的官方历史,绘制一个答案......
Python是,在一定程度上,一个脚本语言。现在,有很多“脚本语言”的定义,但我将在这里使用的是:为有效使用简短或交互式程序而设计的语言。这样的语言倾向于允许单行程序而没有过多的样板文件;使键盘输入更容易(例如,避免过多的标点符号);并为常见任务提供内置语法(方便尽可能牺牲纯度)。在Python的情况下,打印一个值是非常常见的事情,特别是在交互模式下。要求print
是一个功能,这似乎在这里不必要的麻烦。有99%的时间做正确的事情的特殊语法的错误风险要低得多。
通过这个参数'input'也需要一个语句。 – steffen 2015-05-12 13:47:24
我会在我的心中扔在此:
在Python 2.x的print
不是错误的陈述,或因为打印到stdout
是这样做的一个基本的东西。其他的事情都是如此认真思考,或者至少有一个可以理解的理由,那就是这个订单的错误看起来很奇怪。如果与stdout
通信本来就是如此基本,与stdin
沟通将必须同样重要,但input()
是一个功能。
如果你看看list of reserved keywords和list of statements哪些不是表达式,print
明显突出显示,这是另一个暗示,必须有非常具体的原因。
我认为print
有是一个语句,而不是一个表达式,以避免在input()
安全漏洞。请记住,Python2中的input()
可评估用户输入的任何内容,如stdin
。如果用户键入print a
和a
包含所有密码的列表,那将是安静的灾难性的。
显然,input()
评估表达式的能力被认为比print
是一个正常的内置函数更重要。
- 1. jQuery中的$ .print()是什么?
- 2. 的Python 3 print()函数
- 3. 为什么在这种情况下print()函数不打印
- 4. 为什么使用java -jar调用print函数时不打印?
- 5. Lua中print(0x1e1)的输出是什么?为什么?
- 6. print()是做什么的?
- 7. 为什么print('\ n')* 100在Python 3.3中不起作用?
- 8. 为什么“echo'2'。print(2)+ 3”print 521?
- 9. Python全局函数像'print'
- 10. 为什么Python 3.2中的print()似乎默认为UTF-8?
- 11. python中itertools.izip的逆函数是什么?
- 12. python中的系统函数是什么
- 13. python中zip的反函数是什么?
- 14. 为什么print(print())在Lua中不能像print(type(2))那样工作?
- 15. Python:为什么我不能做的理论:print(i.extend(j))
- 16. 如何检查我的函数print/echo是什么?
- 17. python 3中print(x)`和print(* x)`有什么区别?
- 18. Python的print语句中的%运算符称为什么?
- 19. 为什么print(“\ 0007”)不发出哔声?
- 20. 为什么print语句不被执行?
- 21. Python:为什么print语句和subprocess.call()输出不同步?
- 22. 为什么Java PrintStream必须重载其print()函数?
- 23. 为什么Python中的函数是错误的?
- 24. 在Python中,为什么函数中的exec不会导入?
- 25. 为什么CanvasRenderingContext2D.createLinearGradient()不是静态函数?
- 26. 为什么lambda不是函数
- 27. 为什么.val()不是函数?
- 28. 为什么Firebug说toFixed()不是函数?
- 29. 为什么显示res.login不是函数?
- 30. 为什么javascript getTime()不是函数?
请参阅http://www.python.org/dev/peps/pep-3105/ – jfs 2010-12-10 22:39:12
有趣;从未认为这是一个问题,但很好的问题。 – 2010-12-10 22:41:34
readln和writeln也是在Turbo Pascal中内置的。永远不要理解为什么,而且我更喜欢C来让它们变得更好。 – sashoalm 2014-04-24 11:42:13