在python中,一切都是对象,你可以轻松传递它。
所以我能做到:
>> def b():
....print "b"
>> a = b
>> a()
b
但如果我这样做
a = print
我得到SyntaxError
。为什么这样?
答案 0 :(得分:20)
在Python 2.x中,print是一个声明不的函数。在2.6+中,您可以使用from __future__ import print_function
将其设置为给定模块中的函数。在Python 3.x中,它是一个可以传递的函数。
答案 1 :(得分:6)
在python2中,print
是一个声明。如果您执行from __future__ import print_function
,则可以按照您的描述进行操作。在python3中,你尝试过没有任何导入的东西,因为print是一个函数。
答案 2 :(得分:4)
其他答案都是正确的。 print
是一个语句,而不是python2.x中的函数。你有什么将在python3上工作。我唯一需要补充的是,如果你想要一些适用于python2和python3的东西,你可以传递sys.stdout.write
。这不会写一个换行符(与print
不同) - 它的作用就像任何其他文件对象一样。
答案 3 :(得分:3)
print
不是pre 3.x python中的函数。它甚至看起来不像一个,你不需要通过(params)