#-*- 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)拆包使用* 字典拆包使用**