Are functions evaluated when passed as parameters?

ぃ、小莉子 提交于 2019-12-02 03:27:48

Passing a function as a parameter does not call it:

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>

of course, if you pass a function call to another function, what you're passing is the return value:

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

Note the order in which they are called: f2 is called first, and its return value is passed to f1.

None of the code in your question actually calls connect(), so the function is never invoked. All that self.run(self.connect) does is make self.runner a synonym for self.connect.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!