1 多个参数
#-*-coding:utf-8-*- ''' 1、按位置传递多个参数 2、 ''' # def my_sum(a,b): res = a+b return res '''传递方式1,按照位置传参''' #ret = my_sum(1,2) '''站在实参的角度上,按照参数传参''' ret = my_sum(b=3,a=9) print(ret) '''混着用可以,但是必须先按照位置传参,再按照关键字传参 不能给同一个参数传多个值 ''' # ret = my_sum(2,a=1),不可以! # my_sum(a=1,2) # 不可以!!!
2 位置参数和默认参数
#-*-coding:utf-8-*- '''站在形参角度 1、位置参数,必须传,且有几个参数就传几个值 2、默认参数,如果传了,就用传的,没传就用默认的 按位置传参 按关键字传参 注意:定义函数参数的时候,必须先定义位置参数,再定义默认参数 ''' def classmate(name,sex='男'): print('%s : %s'%(name,sex)) classmate("bowen") classmate("wenwen",'女') classmate('bowen1') classmate("bowen2") classmate("bowen3") classmate(sex='女',name='bowen22')
3 动态参数 *args,接收按照位置传参的值,组织成一个元组
#-*-coding:utf-8-*- ''' 动态参数 *不能少,表示动态的! 参数名args,这是约定的,比入print()函数 定义参数的顺序:先定义位置参数 在定义动态参数 最后定义默认参数 ''' def sum(*args): n = 0 for i in args: n +=i return n print(sum(1,2)) print(sum(1,2,3))
4 **kwargs ,接收,组织成一个字典形式的
#-*-coding:utf-8-*- ''' 动态参数 *不能少,表示动态的! 参数名args,这是约定的,比入print()函数 定义参数的顺序:先定义位置参数 在定义动态参数 最后定义默认参数 *不能按关键字传递 ''' def func(**kwargs): print(kwargs) func(a = 1,b=2,c=3) func(a = 1,b=2) func(a=1)
5 动态参数混用
#-*-coding:utf-8-*- ''' 动态参数 混合用,最无敌 不能换位置 ''' def func(*args,**kwargs): print(args,kwargs) func(1,2,3,4,5,a='aaaa',b='bbb')
6 默认参数混合动态参数时的传参顺序
#-*-coding:utf-8-*- ''' 动态参数 混合用,最无敌 不能换位置,*必须在**之前!这是之前约定好的 ''' def func(*args,default=6,**kwargs): print(args,default,kwargs) func(1,2,3,4,5,default=8,a='aaaa',b='bbb')
7 * 号对于实参和形参的不同作用
#-*-coding:utf-8-*- ''' 站在形参的角度上,给变量加上*,就是组合所有传来的值 ''' def func(*args): print(args) func(1,2,3,4,5) l = [1,2,3,4,5] func(l[0],l[1],l[2]) '''站在实参角度上给序列加上*号,就是将这个序列按照顺序打散''' func(*l)
8 **对于实参和形参的作用
#-*-coding:utf-8-*- ''' 站在形参的角度上,给变量加上**,就是组合所有传来的值 ''' def func(**kwargs): print(kwargs) func(a=1,b=2) d = {'a':1,'b':2} func(**d) '''站在实参角度上给序列加上**号,就是将这个序列按照顺序打散'''
9 函数的注释