Passing ints to a function
Rick Johnson
rantingrickjohnson at gmail.com
Sun Jun 10 17:41:58 EDT 2012
On Jun 9, 3:29 am, Jussi Piitulainen <jpiit... at ling.helsinki.fi>
wrote:
> Here's something you could have thought of for yourself even when you
> didn't remember that Python does have special built-in support for
> applying a function to a list of arguments:
>
> def five(func, args):
> a, b, c, d, e = args
> return func(a, b, c, d, e)
>
> The point is that the function itself can be passed as an argument to
> the auxiliary function that extracts the individual arguments from the
> list.
Good point. However the function "five" is much too narrowly defined
and the name is atrocious! I like concise, self-documenting
identifiers.
py> L5 = [1, 2, 3, 4, 5]
py> L4 = [1, 2, 3, 4]
py> def f4(a,b,c,d):
print a,b,c,d
py> def f5(a,b,c,d,e):
print a,b,c,d,e
py> def apply_five(func, args):
a, b, c, d, e = args
return func(a, b, c, d, e)
py> apply_five(f5, L5)
1 2 3 4 5
py> apply_five(f5, L4)
ValueError: need more than 4 values to unpack
#
# Try this instead:
#
py> def apply_arglst(func, arglst):
return func(*arglst)
py> apply_arglst(f4,L4)
1 2 3 4
py> apply_arglst(f5,L5)
1 2 3 4 5
...of course you could create a general purpose apply function; like
the one Python does not possess any longer ;-)
More information about the Python-list
mailing list