函数的引用传递

在Python中,函数本身也是对象,所以可以将函数作为参数传入另一函数并进行调用。

def func_a(func, *args, **kwargs):
  print(func(*args, **kwargs))

def func_b(*args):
  return args

if __name__ == '__main__':
  func_a(func_b, 1, 2, 3)

  

运行结果:

 
(1, 2, 3)

 

如果已经提前知道需要调用什么函数,那完全不必要把函数作为参数传入另一个函数并调用,直接调用函数即可。

问:那么把函数名作为参数传递给其他函数,有什么特别的优势吗?

答:可以回调。将函数名作为参数变量可以组成一些数据类型,如果在其他函数中调用,会使调用更加灵活和方便。

回调函数举例:

你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。

在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做 触发回调事件,店员给你打电话叫做 调用回调函数,你到店里去取货叫做 响应回调事件

问:那为什么不直接调用,而要回调呢?

答:有时候需要内部函数执行一段功能后再回调。例如装饰器。

 

posted @ 2020-11-25 20:46  清水湾的水  阅读(197)  评论(0)    收藏  举报