我的教授已经提到可以将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")
Run Code Online (Sandbox Code Playgroud)
运行以下命令后,我收到此语法错误:
goTime(test, print)
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
如果我定义自己的使用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")
Run Code Online (Sandbox Code Playgroud)
在Python 3中,它将开箱即用.但是,在Python 2.7中,您可以:
from __future__ import print_function
def foo(f,a):
f(a)
foo(print,2)
2
Run Code Online (Sandbox Code Playgroud)
请注意,在Python2.7之后,from __future__ import print_function您将无法再print像关键字那样使用:
>>> from __future__ import print_function
>>> print 'hi'
File "<stdin>", line 1
print 'hi'
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
虽然我认为你的教授只想说明Python中的函数是一等公民(即:对象),但它们可以作为任何其他变量传递.他使用了一个有争议的例子:)
希望这可以帮助!