1

如果我有这样的代码:

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 连接尚未评估?

4

2 回答 2

6

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

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.

于 2013-03-06T20:00:25.670 回答
2

您问题中的代码实际上connect()都没有调用 ,因此永远不会调用该函数。所做self.run(self.connect)的只是self.runner使self.connect.

于 2013-03-06T19:59:55.480 回答