zoukankan      html  css  js  c++  java
  • python函数中的参数*args和**kwargs的含义和用法

    python函数中的参数*args和**kwargs的含义和用法

    在python语言写成的模块中的函数里,常常可以看到函数的参数表列里面有这两个参数,形如:

    def some_function(*args, **kwargs):
        to do list
        return 0

    首先,解释星号的作用,一个星号*的作用是将tuple或者list中的元素进行unpack,分开传入,作为多个参数;两个星号**的作用是把dict类型的数据作为参数传入。

    kwargs是keyword argument的缩写,args就是argument。我们知道,在Python中有两种参数,一种叫位置参数(positional argument),一种叫关键词参数(keyword argument),关键词参数只需要用 keyword = somekey 的方法即可传参,而位置参数只能由参数位置决定。这也就决定了位置参数一定要在前面,否则关键词参数数量的变化(比如有些kwargs有默认值因此没有传参或者在后面传参的),都会使得位置无法判断。因此常见的也是*args**kwargs 前面。

    这两个的用途和效果如下:

    def this_fun(a,b,*args,**kwargs):
        print a
        print b
        print args
        print kwargs
    
    
    this_fun(0,1,2,3,index1=11,index2=22)
    0
    1
    (2, 3)
    {'index2': 22, 'index1': 11}

    也就是说,第一中不定的参数形式把剩下的没有关键字的参数收起来形成一个tuple,而第二种把有关键字的收起来做成一个字典。

    2018年06月05日23:27:57
    抖落岁月的尘沙,以纯银一样的声音,和你的梦对话,世界也许很小很小,心的领域很大很大。 —— 诗人,舒婷

  • 相关阅读:
    2021年4月27日 团队冲刺阶段01
    2021年4月26日
    2021年4月25日
    2021年4月24日
    2021年4月23日
    2021年4月22日
    2021年4月21日
    神奇的数列之“Last Defence ”
    经典圆交面积求解之“Intersection ”
    计蒜客第六场
  • 原文地址:https://www.cnblogs.com/morikokyuro/p/13256724.html
Copyright © 2011-2022 走看看