[Numpy-discussion] function name as parameter

Thomas Kirk Gamble tkg@lanl....
Wed Oct 20 10:59:31 CDT 2010


On Wed, 2010-10-20 at 09:46 -0400, Zachary Pincus wrote:
> > 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
> 

This works fine.  Too obvious to see, I guess.

> 
> 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.

I try this and compare performance.  I had looked for an 'amoeba'
function, but couldn't find anything by that name.  I should have
broadened my search a bit. ;-)

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

-- 
Thomas K. Gamble
Research Technologist, System/Network Administrator
Chemical Diagnostics and Engineering (C-CDE)
Los Alamos National Laboratory
MS-E543,p:505-665-4323 f:505-665-4267

There cannot be a crisis next week. My schedule is already full.
    Henry Kissinger



More information about the NumPy-Discussion mailing list