python函数中的*args与**kwargs

来源:互联网 发布:java图形界面设计工具 编辑:程序博客网 时间:2024/06/05 03:23

*args

在函数的参数列表中,接受任何多个无名参数。

**kwargs

在函数参数列表中,接受类似于a=1这样的参数形成字典{‘a’:1}

注意!

  1. *args或者**kwargs可以单独使用
  2. 当二者一起使用时,在参数表中要将*args放在**kwargs前面(*args,**kwargs)
  3. 在参数列表为(*args,**kwargs)时,在传参时注意将arg的参数放在kwarg前面

一个例子

def func(*args,**kwargs):    print('args is :',args)    print('kwargs is :',kwargs)if __name__=='__main__':    func(1,2,3,4)    func(a=1,b=3,c=5)    func(3,4,5,'a',t=6)#args is : (1, 2, 3, 4)#kwargs is : {}#args is : ()#kwargs is : {'c': 5, 'a': 1, 'b': 3}#args is : (3, 4, 5, 'a')#kwargs is : {'t': 6}

——————————————————————————————————————————-
最近在看《Effective Python》,得知了一些关于*args更多的知识,更新一下。
1.变长参数在传给函数时,首先要转化成元组。
例如:

def test(*t):    print(type(t))    print(t)test(1,2)#output:#<class 'tuple'>#(1,2)

2.另外,可以用*来指定变长参数的范围。在不使用*时,变长参数接受后面所有多余的参数。而使用*指定后,*后的范围为传入的变长参数。

def log(message,*args):        print(message)        print(','.join(str(x) for x in args[0]))log('hello',*([1,1,1],[2,2,2]))#output#hello#1,1,1#倘若改为for x in args[1]#输出#hello#2,2,2
原创粉丝点击