9

在 python 中,一切都是对象,您可以轻松地传递它。

所以我可以这样做:

>> def b():
   ....print "b"
>> a = b
>> a()
   b

但如果我这样做

a = print

我明白了SyntaxError。为什么这样 ?

4

4 回答 4

20

在 Python 2.x 中,print 是语句而不是函数。在 2.6+ 中,您可以使用from __future__ import print_function. 在 Python 3.x 中,它是一个可以传递的函数。

于 2012-08-03T16:21:54.260 回答
6

在python2中,print是一个语句。如果你这样做from __future__ import print_function,你可以按照你描述的那样做。在 python3 中,您尝试的内容无需任何导入即可工作,因为 print 是一个函数。

这在PEP3105中有介绍

于 2012-08-03T16:22:39.650 回答
4

The other answers are correct. print is a statement, not a function in python2.x. What you have will work on python3. The only thing that I have to add is that if you want something that will work on python2 and python3, you can pass around sys.stdout.write. This doesn't write a newline (unlike print) -- it acts like any other file object.

于 2012-08-03T16:24:01.097 回答
3

print不是 3.x python 之前的函数。它甚至不像一个,你不需要调用(params)

于 2012-08-03T16:21:47.117 回答