How to write a simple callback function?
In this code
if callback != None:
callback
callback
on its own doesn't do anything; it accepts parameters - def callback(a, b):
The fact that you did callback(1, 2)
first will call that function, thereby printing Sum = 3
, and then main()
gets called with the result of the callback
function, which is printing the second line
Since callback
returns no explicit value, it is returned as None
.
Thus, your code is equivalent to
callback(1, 2)
main()
Solution
You could try not calling the function at first and just passing its handle.
def callback(n):
print("Sum = {}".format(n))
def main(a, b, _callback = None):
print("adding {} + {}".format(a, b))
if _callback:
_callback(a+b)
main(1, 2, callback)
Here's what you wanted to do :
def callback(a, b):
print('Sum = {0}'.format(a+b))
def main(a,b,f=None):
print('Add any two digits.')
if f is not None:
f(a,b)
main(1, 2, callback)