首页 > Django > django *args, **kwargs 用法

django *args, **kwargs 用法

2012年5月1日 发表评论 阅读评论 阅读387 次   

def foo(*args, **kwargs):

print ’args = ‘, args

print ’kwargs = ‘, kwargs

print ’—————————————’

if __name__ == ‘__main__’:

foo(1,2,3,4)

foo(a=1,b=2,c=3)

foo(1,2,3,4, a=1,b=2,c=3)

foo(‘a’, 1, None, a=1, b=’2′, c=3)

 

输出结果如下:args =  (1, 2, 3, 4)
kwargs =  {}
—————————————
args =  ()
kwargs =  {‘a’: 1, ‘c’: 3, ‘b’: 2}
—————————————
args =  (1, 2, 3, 4)
kwargs =  {‘a’: 1, ‘c’: 3, ‘b’: 2}
—————————————
args =  (‘a’, 1, None)
kwargs =  {‘a’: 1, ‘c’: 3, ‘b’: ’2′}

 

可以看到,这两个是python中的可变参数。*args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个 dict。并且同时使用*args和**kwargs时,必须*args参数列要在**kwargs前,像foo(a=1, b=’2′, c=3, a’, 1, None, )这样调用的话,会提示语法错误“SyntaxError: non-keyword arg after keyword arg”。

 

还有一个很漂亮的用法,就是创建字典:

def kw_dict(**kwargs):

return kwargs

print kw_dict(a=1,b=2,c=3) == {‘a’:1, ‘b’:2, ‘c’:3}



|2|left
填写您的邮件地址,订阅我们的精彩内容:
分类: Django 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.

无觅相关文章插件,快速提升流量