> 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  
> means
> of passing function names?

Just pass the function itself! For example:

def foo():
   print 6

def call_function_repeatedly(func, count):
   for i in range(count):
     func()

call_function_repeatedly(foo, 2) # calls foo twice

bar = foo
bar() # still calls foo... we've just assigned the function to a  
different name


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.

Zach
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to