Functions are objects, like everything else in Python. You may pass functions as arguments, change their names, or delete them. For example:
def square(x): """ Return the square of x """ return x ** 2 square(4) # 16 sq = square # now sq is the same as square sq(4) # 16 del square # square doesn't exist anymore print(newton(sq, .2)) # passing as argument
Passing functions as arguments is very common when applying algorithms in scientific computing. The function fsolve in scipy.optimize for computing a zero of a given function or quad in scipy.integrate for computing integrals are typical examples.
A function itself can have a different number of arguments with differing types. So, when passing your function f to another function g as an argument, make sure that f has exactly the form described in the docstring of g.
The docstring of fsolve gives information about its parameter func:
fun c -- A Python function...