# [Tutor] Turning multiple Popen calls into a function

Thu Nov 1 19:20:13 CET 2007

```Hi Jay...
jay wrote:
...
> I would be sending an arbitrary number of PIPES with each function call.
>
> I'm a little stumped as to how to handle the variables.  If I have an
> arbitrary number of PIPES, how do I declare my variables (p1, p2, p3,
> etc...) ahead of time in the function??
>
> Thanks for any suggestions!

>>> def foo(bar, *fizz, **bang):
...     print "bar:", bar
...     print "fizz:", fizz
...     print "bang:", bang
...

>>> foo('and now for something completely different')
bar: and now for something completely different
fizz: ()
bang: {}

>>> foo('hello', 'and', 'cows', 'eat', 'grass')
bar: hello
fizz: ('and', 'cows', 'eat', 'grass')
bang: {}

>>> foo('hello', 'and', 'cows', 'eat', 'grass', greeting='hello',
location='world')
bar: hello
fizz: ('and', 'cows', 'eat', 'grass')
bang: {'greeting': 'hello', 'location': 'world'}

>>> a_tuple = ('and', 'cows', 'eat', 'grass')
>>> a_dict = dict(greeting='hello', location='world')
>>> foo('hello', *a_tuple, **a_dict)
bar: hello
fizz: ('and', 'cows', 'eat', 'grass')
bang: {'location': 'world', 'greeting': 'hello'}

Or, just pass the pipes in as an iterable to your function:
def pipe_handler(pipes):
for n, pipe in enumerate(pipes):
print "Pipe %d: '%s'" % (n, pipe)

pipes = []
pipes.append(some_pipe)
...
pipe_handler(pipes)