Python参数传递中的 args, kwargs

概念

真正的Python参数传递语法是***,其被称为 被称为打包和解包参数*args**kwargs只是大家默认的一种形式。也可以写成*keys**kkeys等其他形式。二者都是为了在不知道函数可以接收的参数的数量时,定义函数可以接收任意数目的参数。

打包参数

所谓的打包参数,就是指 该参数用作函数的形参,等函数被调用被传入不固定数目的实参时,实参被打包被传入函数。

  • *args

    表示函数接收可变长度的非关键字参数列表作为函数的输入

    exp:

def func(a,*args):
	for arg in args:
		print(a,arg)
func(1,2,3,4)
>> 1,2
   1,3
   1,4
  • **kwargs

    表示函数接收可变长度的关键字参数字典作为函数的输入

    exp:

def func(**kwargs):
	for key, value in kwargs.iteritems():
		print("{} = {}".format(key,value))
func(name="he", value="5")
>> name = he
   value = 5

解包参数

所谓解包参数,就是在函数调用时,将需要传入的参数集合,通过解包参数 解包成和函数的各个形参相对应,并传入到函数中。

  • *args

    在函数调用时, * 能将list或元组解包成不同的参数

    exp:

    def func(a,b,c,d):
    	print(a,b,c,d)
    
    args = (1,2,3,4)
    func(*args)
    >> 1 2 3 4
    args = [1,2,3,4]
    func(*args)
    >> 1 2 3 4
    
  • **kwargs

    在函数调用中,**会将已经打包好的字典,解包成独立的key-value对,并将解包后的参数传给函数形参

    def func(a,b,c,d):
    	print(a,b,c,d)
    
    kwargs = {"a":1,"b":2,"c":3,"d":4}
    func(**kwargs)
    >> 1 2 3 4
    

额外知识-关键词参数

指在传参时指明形参的名称,并为其赋以实参的值。

exp:

def func(a,b):
	return a+b
func(a=1,b=2)		# 关键词参数
posted @ 2022-06-15 09:38  jacknie23  阅读(1470)  评论(0编辑  收藏  举报