【python的魔法函数*args 和 **kwargs 】

python的魔法函数*args 和 **kwargs

概要

定义一个函数的参数前面*(星号)args 和**kwargs。比如var 和 **vars也可以,只是一个命名定义规则。

含义:*args是把元祖(非关键字参数)作为参数传递给函数,**kwargs是字典(关键字参数)键值对形式传递给函数

1、*args的用法

用来发送一个非键值对的可变数量的参数列表给一个函数

示例一:

 1. def A(*args):
    print(args)

A('aaa')

输出结果:(‘aaa’,)

示例二:

def A(*args):
    print(args)
#变量是元组形式
def A(*args):
    print(args)
#变量是元组形式
arg = ('aaa','1','2')
ls = ['bbb','1','2']
#如果变量是一个元组或者列表,输出变量的每一个值则用[*变量名]
A(arg)
A(*arg)
A(ls)
A(*ls)

依次输出结果如下:

(('aaa', '1', '2'),)
('aaa', '1', '2')
(['bbb', '1', '2'],)
('bbb', '1', '2')

2、 **kwargs的用法

kwargs允许你将不定长度的键值对(字典),作为参数传递给一个函数。如果你想要在一个函数里处理带名字的参数,你应该使用kwargs。

示例一

def A(**kwargs):
    print(kwargs)
#定义字典变量
ks = {'aaa':1,'bbb':2,'ccc':3}

#调用A方法
A(**ks)

结果输出:
{‘aaa’: 1, ‘bbb’: 2, ‘ccc’: 3}

示例二

def A(**kwargs):
    print(kwargs)

#a'='1的形式传参
A(a=1,b=2)

输出结果
{‘a’: 1, ‘b’: 2}

*args 和 **kwargs 结合使用

*args 和 **kwargs 结合,那么就要定义一个元组和字典类型数据

定义元组以及字典类型

自定义函数,包含*args和**kwargs

def func(argument, *args, **kwargs):
	print(argument,args,kwargs)

定义元组以及字典类型
tuple = (1, 2)
dict = {
	'a': 1,
	'b': 2
}

调用函数,传入参数
注意位置参数和关键字参数的顺序
func(*tuple , **dict)

输出结果
1 (2,) {'a': 1, 'b': 2}

自定义的入参可不传,输出结果则是空

定义元组以及字典类型

自定义函数,包含*args和**kwargs

def func(argument, *args, **kwargs):
	print(argument,args,kwargs)

# 定义元组以及字典类型

```python
aa = 1
tuple = (1, 2)
dict = {
	'a': 1,
	'b': 2
}

# 调用函数,传入参数
# 注意位置参数和关键字参数的顺序
# func(*tuple , **dict)
#函数有三个参数,自定义的入参可不传,输出结果则是空
#可见argument 对应aa,**dict 对应**kwargs,则*args未传参则为空
func(aa,**dict)

输出结果
1 () {‘a’: 1, ‘b’: 2}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值