1:无参数
2:多个参数
3:默认参数
4:指定参数
5:动态参数
前两个就不说了,默认参数就是在参数后面给定默认值:
用处:由于python 在指定形参时是不需要指定类型的,但是有时候我们在函数内部需要用到
参数类型的方法,怎么办呢,那就再参数后面加上默认值,再使用的时候就可以使用该类型的方法了
# def show3(a1,a2=222): # print(a1,a2) #
指定参数:也就是在传递实参的时候写出形参
# #也就是show(a2=111,a1=222)就是指定参数 # def show(a1,a2): # print(a1,a2)
动态参数:
动态参数有两种 一个是*args 另一个是**args
那么这两个有什么区别呢:
*args把给定的参数封装成一个列表(list)
而**kwargs 则是把给定的参数封装成一个字典
而且在给定实参的时候,*arg无需加上形参,
而**kwargs则要指定形参和实参,
# *arg # def show(*args): # print(args,type(args)) # # show('djkdj','jdkal') #就是将你输入的多个参数转换成一个参数是元组类型的 # **arg # 把传入的参数转换成一个字典也就是需要在传入参数时需要指定参数的名称; # def show(**kwargs): # print(kwargs,type(kwargs)) # show(n1=11,n3=22) #还可以两个一起使用:功能更加的强大:会把无参数名臣的封装成一个tuple 把有参数名称的封装成一个字典;并且,arg必须在**kwargs前面 # def show(*args ,**kwargs): # print(args,kwargs) # show(11,22,33,nn=22,kk=33)
如果两个一起用能实现强大的功能;
值得注意的是虽然*args和**kwargs会把我们给他的参数封装成列表和字典,但是如果我们在给定实际参数的时候给的是一个列表或者是字典,只是表示只有一个实参,而不是列表和字典里面的值;如果想要实现这个功能,那么我们就需要在列表或者字典前面加上*或者**就能实现了;
他的一些应用:字符串的格式化
# s1 = '{0} is {1}' # # s2 = s1.format('bluesli','2b')#我们页可以不一个个传入参数;还可以直接传入一个列表只需要加上一个*好 # # l = ('bluesli','2b') # # s2 = s1.format(*l) # s3 = '{name} is {acter}' # # k = {'name':'kkk','acter':'ll'} # # s3 = s3.format(**k) # s3 = s3.format(name='kk',acter='bb') # print(s3)