Python:将print函数作为参数发送

Tal*_*lon 5 python

我的教授已经提到可以将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)

Pau*_* Bu 5

在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中的函数是一等公民(即:对象),但它们可以作为任何其他变量传递.他使用了一个有争议的例子:)

希望这可以帮助!

  • 我认为你不需要在'print_function`周围打勾. (2认同)