Multiple arguments: how do you handle them 'nicely'?

Erik Max Francis max at
Fri Aug 9 07:36:47 CEST 2002

Blair Hall wrote:

> I would be interested to know how others would tackle the following
> simple situation.
> I would like to define a function that will accept an arbitrary number
> of arguments. So,
> for example, I  write:
>     def f(*args):
>         for i in args:
>             print i
> I would prefer that f() behave the same way for either a list or
> tuple,
> or a comma separated
> series of arguments. Moreover, if  f() is passed something that
> emulates
> a sequence type then
> it should handle that too.
> How should I write f() so that it recognizes when it has been passed a
> container
> that is sequence-like and when it simply has a series of arguments?

Why not something like:

	def f(*args):
	    if len(args) == 1:
	        args = args[0]
            for i in args:
	        print i

This presumes, of course, that you want the pass-several-arguments and
pass-one-argument-that-is-a-sequence cases to behave identically.

 Erik Max Francis / max at /
 __ San Jose, CA, US / 37 20 N 121 53 W / ICQ16063900 / &tSftDotIotE
/  \ There is nothing so subject to the inconstancy of fortune as war.
\__/ Miguel de Cervantes
    Church /
 A lambda calculus explorer in Python.

More information about the Python-list mailing list