[Numpy-discussion] function name as parameter
Thomas Kirk Gamble
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):
> 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. ;-)
> NumPy-Discussion mailing list
Thomas K. Gamble
Research Technologist, System/Network Administrator
Chemical Diagnostics and Engineering (C-CDE)
Los Alamos National Laboratory
There cannot be a crisis next week. My schedule is already full.
More information about the NumPy-Discussion