#-*- coding:utf-8 -*-
#缺省参数的定义
def test(a,b=10):
print(a+b)
#缺省参数必须在参数列表的最后定义,不可以定义在普通参数前面
# def test(a,b=10,c) ---这种定义方式是错误的
test(2)
def test2(a, b =10, c=5):
print(a+b+c)
#命名参数的使用
test2(3,c=3)
#指定给参数c赋值,这里"c=3" c必须是形参名,不可以写其他变量名
#-*- coding:utf-8 -*-
#带参数名的可变参数 **kwarg
def test(a, b, c = 22, *arg, **kwarg):
print(a)
print(b)
print(c)
print(arg)
print(kwarg)
test(1,2,3,4,5)
#打印 c的值是3, arg的值是(4,5) kwarg的值是{} --空的字典
#这里使用缺省参数没有实际意义,因为必须传值,只是验证一下缺省参数,可变参数,带参数名的可变参数这几个参数在参数列表中的顺序
print("="*10)
test(1,2,3,4,nam="jack",age=18)
#打印c的值是3,arg的值是(4,) ,kwarg的值是{"name":"jack","age":"18"}
#-*- coding:utf-8 -*-
#可变参数的遍历
def test(a, *arg):
res = a
for tmp in arg:
res += tmp
print(res)
test(1,2,3)
#结果打印6
#-*- coding:utf-8 -*-
#实参拆包应用
tupleNum = (4,5)
dicInfo = {"name":"tom","age":18}
def test(a, *arg, **kwarg):
print(a)
print(arg)
print(kwarg)
print("===不拆包效果==")
test(1, tupleNum, dicInfo)
#观察打印结果发现tupleNum和dicInfo被当做参数传给arg
print("===拆包后==")
test(1, *tupleNum, **dicInfo)
#在实参中,元组(tuple)拆包使用* 字典拆包使用**
![](https://images2018.cnblogs.com/blog/644743/201807/644743-20180701111314924-957858500.png)