When passing functions as args, how to pass extra args for passed function?
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
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:
for i in xrange(times):
# may need 'from __future__ import generators' at top of file
More information about the Python-list