Thanks for the explanation! Jacob Schmidt
> Jacob S. wrote: > > Thank you! > > > > Wait, though. > > > > How do I do this? > > > > def differentnoofvars(*args,**kwargs): ## By the way, is it **kwargs or > > **kwds? > > Call it what you like, it's an ordinary function parameter. kwds is commonly used but you can use > kwargs. > > print kwargs > > another(kwargs) > > Should be another(**kwargs). If you call another(kwargs) then kwargs will be an ordinary parameter > of another and another would be defined as > def another(kwargs): > ... > > > > > def another(**kwargs): > > for x,y in kwagrs.items(): > > print "%s = %s" % (x,y) > > > > a = ['a=2','f=3','t=[1,2,3]'] ## A list of kwargs that I want to send > > Should be a dict, the **kwds parameter is a dict mapping keywords to values > a = {'a':2, 'f':3, 't':[1,2,3]} > > There really are two different and complementary things going on here, at the point of call and at > the point of function definition. > > At the point of call, you can pass a dictionary instead of using explicit, named parameters. For > example, given a function test() defined like this: > >>> def test(a, b): > ... print a, b > > you can call it with ordinary named arguments: > >>> test(a='foo', b='bar') > foo bar > > Or you can pass it a dictionary with the named arguments, using extended calling syntax: > >>> d= {'a':'foo', 'b':'bar'} > >>> test(**d) > foo bar > > > Inside the function, if you have a **kwds parameter, it will receive a dict containing any keyword > arguments not explicitly declared. This allows you to pass keyword parameters that you don't > anticipate when the function is defined. For example, > > >>> def test2(a, **kwds): > ... print a > ... for k,v in kwds.items(): > ... print k,v > > >>> test2(1) # No keywords > 1 > >>> test2(a=1) # a is a declared parameter so kwds is empty > 1 > >>> test2(1, b=2, c=3) # b and c are passed in kwds > 1 > c 3 > b 2 > > Kent > > > individually to differentnoofvars > > differentnoofvars(a) > > > > > > > >>>Hey, could you give an example? > >>>Thanks, > >>>Jacob > >>> > >>> > >>>>apply() is deprecated; it has been replaced by 'extended > >>> > >>>call syntax'. > >>>Instead of > >>> > >>>> apply(fn, args, kwds) > >>>>you can now write > >>>> fn(*args, **kwds) > >>>> > >>>>Kent > >> > >>Here is a quick example I came up with: > >> > >> > >>>>>def spam(*args, **kwargs): > >> > >>... print "Here are the args you supplied:" > >>... for item in args: > >>... print item > >>... print > >>... print "Here are the kwargs you supplied:" > >>... for key,value in kwargs.items(): > >>... print key, '=', value > >>... > >> > >>>>>spam(1,'a','eggs',s=0, p=1, a=2, m=3) > >> > >>Here are the args you supplied: > >>1 > >>a > >>eggs > >> > >>Here are the kwargs you supplied: > >>a = 2 > >>p = 1 > >>s = 0 > >>m = 3 > >> > >>In the case of the spam() function, 1, 'a', and 'eggs' are all put into > >>the sequence args (not sure if it is a list or tuple). The key/value > >>pairs are bundled into the dictionary kwargs. The arguments have to be > >>given in the right order though: > >> > >> > >>>>>spam(t=1, b=1, 'this', 'will', 'fail') > >> > >>Traceback (SyntaxError: non-keyword arg after keyword arg > >> > >>HTH! > >> > >>Christian > >>http://www.dowski.com > >> > >> > >> > >> > > > > > > _______________________________________________ > > Tutor maillist - [EMAIL PROTECTED] > > http://mail.python.org/mailman/listinfo/tutor > > > _______________________________________________ > Tutor maillist - [EMAIL PROTECTED] > http://mail.python.org/mailman/listinfo/tutor > _______________________________________________ Tutor maillist - [EMAIL PROTECTED] http://mail.python.org/mailman/listinfo/tutor