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