[Numpy-discussion] function name as parameter
Wed Oct 20 08:46:26 CDT 2010
> I'm trying to write an implementation of the amoeba function from
> numerical recipes and need to be able to pass a function name and
> parameter list to be called from within the amoeba function. Simply
> passing the name as a string doesn't work since python doesn't know it
> is a function and throws a typeerror. Is there something similar to
> IDL's 'call_function' routine in python/numpy or a pythonic/numpy
> of passing function names?
Just pass the function itself! For example:
def call_function_repeatedly(func, count):
for i in range(count):
call_function_repeatedly(foo, 2) # calls foo twice
bar = foo
bar() # still calls foo... we've just assigned the function to a
In python, functions (and classes, and everything else) are first-
class objects and can be assigned to variables, passed around, etc,
etc, just as anything else.
However, note that scipy.optimize.fmin implements the Nelder-Mead
simplex algorithm, which is (I think) the same as the "amoeba"
optimizer. Also you might be interested in the openopt package, which
implements more optimizers a bit more consistently than scipy.optimize.
More information about the NumPy-Discussion