When passing functions as args, how to pass extra args for passed function?

Sean Ross sross at connectmail.carleton.ca
Wed Sep 17 01:17:14 CEST 2003

<python at sarcastic-horse.com> wrote in message
news:mailman.1063746594.3920.python-list at python.org...
> When I pass a function as an arg, like for map(...), how do I pass args to
> use for that function?
> If I have a function like this:
> def pretty_format(f, fmt='%0.3f'):
>     return fmt % f
> I want to use it with map() like this:
> formatted = map(pretty_format, unformatted_list)
> #exept I want fmt='%4.5f' !!!
> I need to figure out how to pass a non-default value for fmt.  How do I do
> that?

Here's one way:

formatted = map(lambda f: pretty_format(f, fmt='%4.5f'), unformatted_list)

And, here's another (requires itertools, available in Python 2.3 [*]):

from itertools import repeat
formatted = map(pretty_format, unformated_list, repeat('%4.5f'))

# or you can roll your own,
# credit: http://www.python.org/dev/doc/devel/lib/itertools-functions.html
def repeat(object, times=None):
         if times is None:
             while True:
                 yield object
             for i in xrange(times):
                 yield object

# may need 'from __future__ import generators' at top of file


More information about the Python-list mailing list