[Numpy-discussion] function name as parameter

Nathaniel Smith njs at pobox.com
Wed Oct 20 16:35:49 EDT 2010


On Wed, Oct 20, 2010 at 6:51 AM, Johann Cohen-Tanugi
<cohen at lpta.in2p3.fr> wrote:
> If you really need to pass the function name :
> In [3]: def my_func(x):
>    ...:     return 2*x
>
> In [4]: def caller(fname,x):
>    ...:     return eval("%s(%f)"%(fname,x))
>
> In [5]: caller("my_func",2)
> Out[5]: 4.0

The better way to do this is:

import inspect
def call_this(fname, x):
  caller_frame = inspect.currentframe().f_back
  f = caller_frame.f_locals.get(fname, caller_frame.f_globals.get(fname))
  return f(x)

IMPORTANT USAGE NOTE: never do this :-)

-- Nathaniel



More information about the NumPy-Discussion mailing list