On Sun, 05 Mar 2006 04:45:05 -0800, vbgunz wrote: > PS. I could be far off with this codes purpose; to try and create an > example that will house all the different possible parameters > (positional, keyword, * and **) in one single def statement.
This is usually a bad idea, not because Python can't cope with it, but because it is usually better to learn new things in small pieces, not one giant enormous piece. Try creating a number of small functions that do different things: def f(a, b, c): print "a =", a, "b =", b, "c =", c def g(a=0, b=0, c=0): print "a =", a, "b =", b, "c =", c Now call them different ways, and see what happens: f() f(1) f(1,2) f(1,2,3) f(b=2) Can you see a pattern? g() g(1) g(1,2) g(1,2,3) g(b=2) Then move on to argument collectors: def h(a, b, c=0, *d, **e): print "a =", a, "b =", b, "c =", c print "d =", d, "e =", e Also, remember that "positional arguments" and "keyword arguments" aren't defined differently, they are given when you call the function. For example, suppose you have this: def function(x, y): print x + y Now you call it with positional arguments: function(3, 7) Now you call it with keyword arguments: function(x=3, y=7) Now you call it with both: function(3, y=7) All from the same definition. An argument is positional or keyword according to how it is given, not how it is defined. -- Steven. -- http://mail.python.org/mailman/listinfo/python-list