Skip to content Skip to sidebar Skip to footer

Are Functions Evaluated When Passed As Parameters?

if I have some code like this: def handler(self): self.run(self.connect) def connect(self, param): #do stuff... def run(self, connector): self.runner = connector What's

Solution 1:

Passing a function as a parameter does not call it:

In [105]: deff1(f):
   .....:     print'hi'
   .....:     return f
   .....: 

In [106]: deff2():
   .....:     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.

Solution 2:

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.

Post a Comment for "Are Functions Evaluated When Passed As Parameters?"