Passing functions around and executing
alex23
wuwei23 at gmail.com
Wed May 14 22:56:15 EDT 2008
On May 15, 10:53 am, PatrickMinnesota <PatrickMinnes... at gmail.com>
wrote:
> I have a bunch of functions. I want to put them in a list. Then I
> want to pass that list into another function which does some setup and
> then loops through the list of passed in functions and executes them.
> Some of them need arguments passed in too.
Hey Patrick,
Is something like the following helpful?
>>> def fn1(): print 'fn1'
>>> def fn2(): print 'fn2'
>>> fn_list = [fn1, fn2]
>>> def process(fn_seq):
... # do set up here
... for fn in fn_list:
... fn()
>>> process(fn_list)
fn1
fn2
The easiest way to extend this for optional argument passing would be
to have each function accept keyword arguments, and then to pass a
dictionary of arguments in to each:
>>> def fn1(**kwargs): print 'fn1'
>>> def fn2(**kwargs): print 'fn2: x=%(x)s' % kwargs
>>> fn_list = [fn1, fn2]
>>> def process(fn_seq):
... x = 'hello'
... for fn in fn_list:
... fn(**locals())
>>> process(fn_list)
fn1
fn2: x=hello
You could replace 'process' with a list comprehension:
>>> args = dict(x='hello again')
>>> results = [f(**args) for f in fn_list]
fn1
fn2: x=hello again
Or use 'map':
>>> process = lambda f: f(**args)
>>> results = map(process, fn_list)
fn1
fn2: x=hello again
Sorry, I'm a little bored.
- alex23
More information about the Python-list
mailing list