On May 23, 3:29 am, "inhahe" <[EMAIL PROTECTED]> wrote:
> "inhahe" <[EMAIL PROTECTED]> wrote in message
>
> news:[EMAIL PROTECTED]
>
> > if we assume the constraints are that:
> > 1.he has list, l
> > 2.he has a dictionary, d
> > 3.he wants the function to print the values in the dictionary according to
> > a specific order of their keys as defined by the function, followed by the
> > values of the list
>
> It's also possible (even likely) that he knows outside of the function what
> order he wants the values in, and only used an (incidentally) unordered dict
> called kwargs because he thought that's the only way to pass to those
> parameters.  in which case the function could be left untouched and the he
> would call it like this:
>
> args = [1,2,3]
> f(*args)
> or
> f(*[1,2,3])

You're actually pretty dead-on here. I preferred the keyword approach
because printing it showed an explicit assignment of arguments, but it
looks like I'll have to use a list if there's an *argv argument, since
there's no way to assign it with keywords, and no (working) way to use
them together.

def f(a, *args): print a, args
args = [2, 3]
kwargs = {'a':1}

f(*args, **kwargs)
TypeError: f() got multiple values for keyword argument 'a'

kwargs['args'] = args
f(**kwargs)
TypeError: f() got an unexpected keyword argument 'args'
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to