Keyword Argument In Unpacking Argument List/dict Cases In Python
For python, I could use unpacking arguments as follows. def hello(x, *y, **z): print 'x', x print 'y', y print 'z', z hello(1, *[1,2,3], a=1,b=2,c=3) hello(1, *(1,2,3)
Solution 1:
Regardless of the order in which they are specified, positional arguments get assigned prior to keyword arguments. In your case, the positional arguments are (1, 2, 3)
and the keyword arguments are x=1, a=1, b=2, c=3
. Because positional arguments get assigned first, the parameter x
receives 1 and is not eligible for keyword arguments any more. This sounds a bit weird because syntactically your positional arguments are specified after the keyword argument, but nonetheless the order “positional arguments → keyword arguments” is always adhered to.
Here is a simpler example:
>>> def f(x): pass
...
>>> f(1, x=2)
Traceback (most recent calllast):
File "<stdin>", line 1, in<module>
TypeError: f() got multiple valuesfor keyword argument 'x'>>> f(x=2, *(1,))
Traceback (most recent calllast):
File "<stdin>", line 1, in<module>
TypeError: f() got multiple valuesfor keyword argument 'x'
Post a Comment for "Keyword Argument In Unpacking Argument List/dict Cases In Python"