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?"