二、可变参数#

1. 可变参数args#

可变参数需要添加*,用于接收任意数量的相同类型的参数

1
2
3
4
5
def sum(*args):# 形参能够接收任意个长度的数据
    pass
# 调用可变参数的函数
sum(10,20,30)
sum(10,20,30,40)

可变参数的本质是 将传递的参数包装成了元组

实现sum函数

1
2
3
4
5
def sum(name,*args):# 形参能够接收任意个长度的数据 args为元组类型
    result = 0
    for ele in args:
        result += ele
    return result

2. 可变参数kwargs#

可变参数还有一种形式 可以接收不存在的关键字参数

定义参数时需要在变量名前添加两个*

1
2
3
4
5
def func(**kwargs):# kwargs 接收不存在的关键字参数
    pass

# 调用不存在的关键字参数函数
func(name = '张三',age = 30,score=70)

不存在的关键字参数包装成字典

1
2
3
4
5
6
def func(a,**kwargs):# kwargs 接收不存在的关键字参数 kwargs为字典类型
    name = kwargs['name']
    age = kwargs['age']

# 调用不存在的关键字参数函数
func(name = '张三',age = 30,a=10,score=70)

3. 传递元组给可变参数args#

可以传递元组给可变参数args,需要在元组前加上*进行解包操作

1
2
3
4
5
6
def func(*args):
    print(args)#(10,20,30)

t = (10,20,30)
# 传递元组
func(*t)

4. 传递字典给可变参数kwargs#

在字典的前面加上**的作用是将字典中的元素解包成一个一个的不存在的关键字参数传递给函数

1
2
3
4
5
6
def func(**kwargs):
    print(kwargs)

d = {'name':'张三','age':40}
# 传递字典给可变参数kwargs
func(**d)