On Wed, Jan 23, 2013 at 1:55 PM, Nitin Kumar <nitin.n...@gmail.com> wrote:
> Can anyone explain me why d (2nd parameter of function show) is getting set > to 3, when I am not passing any value to it and kwargs contains d=3. > > I think you mean 4 over here > Why kwargs value is getting set to d argument. Is this the > expected behavior? > And yes, this is the expected behaviour. When you have a dictionary (kwargs in this case), and you use **dictionary in a function call, it "unpacks" the dictionary into the parameters and makes the call. For example, if you have: d = {'a': 1, 'b': 2, 'c': 3} def foo(a, b, c): print a, b, c then foo(**d) is equivalent to calling foo(a=1, b=2, c=3) in your test() function above, what you are doing by show(c, **kwargs) is show(c, d=4, e=5) -- Dhruv Baldawa (http://www.dhruvb.com) _______________________________________________ BangPypers mailing list BangPypers@python.org http://mail.python.org/mailman/listinfo/bangpypers