Skip to main content
 首页 » 编程设计

python之函数作为参数传递时是否被评估

2025年05月04日15三少

如果我有这样的代码:

def handler(self): 
   self.run(self.connect) 
 
def connect(self, param): 
   #do stuff... 
 
def run(self, connector): 
   self.runner = connector 

当我调用 self.run(self.connect) 时首先评估什么?

运行连接中的东西已经完成了吗?或连接 self.connect 尚未评估?

请您参考如下方法:

将函数作为参数传递不会调用它:

In [105]: def f1(f): 
   .....:     print 'hi' 
   .....:     return f 
   .....:  
 
In [106]: def f2(): 
   .....:     print 'hello' 
   .....:      
 
In [107]: f1(f2) 
hi 
Out[107]: <function __main__.f2> 

当然,如果您将一个函数调用传递给另一个函数,您传递的是返回值:

In [108]: f1(f2()) 
hello 
hi 

注意它们的调用顺序:f2 先被调用,它的返回值传递给f1。