Functions are objects
Functions are objects, like everything else in Python. One 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 argumentPassing functions as arguments is very common when applying algorithms in scientific computing. The functions 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 argument, make sure that f has exactly the form described in the docstring of g.
The docstring of fsolve gives information about its func parameter:
func -- A Python function or...