# 可变长度的参数(*与**的用法)
# 可变长度指的是在调用函数时,传入的值(实参)的个数不固定
# 实参是用来为形参赋值的,所以针对溢出的实参必须有对应的形参来接受

# 1:用来接收溢出的位置实参
# *形参名:溢出的位置实参会被*保存成元组的格式然后赋值给紧随其后的变量名
# def func(x, y, *args):
#     print(x, y, z)
#
#
# func(1, 2, 3, 4, 5, 6)

def my_sum(*args):      # *args为规范写法
    res = 0
    for item in args:
        res += item

    return res


res1 = my_sum(1, 2, 3, 4, 5)
print(res1)


# 2:用来接收溢出的关键字实参
# **实参名:用来接收溢出的关键字实参,**会将溢出的关键字保存为字典格式,然后赋值给紧随其后的变量名
def func(x, y, **kwargs):      # **kwargs为规范写法
    print(x, y, kwargs)


func(x=1, y=2, a=3, b=4, c=5)