我的教授曾提到可以将print等函数作为参数传递,但是当我尝试实际实现它时,我会收到语法错误。这是我在这里失踪的小事吗?
def goTime(sequence, action):
for element in sequence:
action(element)
def main():
print("Testing Begins")
test = list ( range( 0 , 20, 2) )
goTime(test, print)
print("Testing Complete")
运行以下命令后,我收到此语法错误:
goTime(test, print)
^
SyntaxError: invalid syntax
如果我定义了自己的使用print的函数,它的工作原理如下:
def printy(element):
print(element)
def goTime(sequence, action):
for element in sequence:
action(element)
def main():
print("Testing Begins")
test = list ( range( 0 , 20, 2) )
goTime(test, printy)
print("Testing Complete")
答案 0 :(得分:5)
在Python 3中,开箱即用。但是,在Python 2.7中,你可以这样做:
from __future__ import print_function
def foo(f,a):
f(a)
foo(print,2)
2
请注意,在执行from __future__ import print_function
之后的Python2.7中,您将无法再像关键字一样使用print
:
>>> from __future__ import print_function
>>> print 'hi'
File "<stdin>", line 1
print 'hi'
^
SyntaxError: invalid syntax
虽然我认为你的教授只想说明Python中的函数是一等公民(即:对象),并且它们可以作为任何其他变量传递。他使用了一个有争议的例子:)
希望这有帮助!
答案 1 :(得分:1)
你不能在Python2中传递print
,因为它是关键词而不是函数。这在Python3中是可能的。
您可以尝试从以后导入新的打印功能。检查这个问题:
然后您可以将其用作函数。
答案 2 :(得分:0)
您可以尝试sys.stdout
import sys
def printy(element):
sys.stdout.write(str(element)+'\n')
答案 3 :(得分:0)
在 python2 中,您可以将 print
包装在包装函数内并传递:
def PrintWrapper(arg):
print(arg)
def MyFunc(x, func):
func(x)
# call the function with the wrapper as an argument
MyFunc("Hello world", PrintWrapper)