如果我有这样的代码:
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还有待评估?
答案 0 :(得分: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
。
答案 1 :(得分:2)
您问题中的所有代码都没有实际调用connect()
,因此永远不会调用该函数。 self.run(self.connect)
所做的只是使self.runner
成为self.connect
的同义词。