1:def func(name)
在调用是,可以通过位置传递给name,也可以通过关键字传递给name值,
Func(“xiaoming”) 或者 func(name=“xiaoming”)
2: def func(name=value)
默认值参数,假设在调用函数时,没有传递给name值,那么name经使用默认值,这里的name仍然可以通过位置和关键字传递值
3: def func(*name)
在函数调用时,那么收集任何,没有被显式匹配的非关键字参数
(注,只能匹配没有被显式匹配的参数,如果非关键字参数在传入时,已经匹配给了某个参数,则此参数就不在那么集合中)
deffunc(a,*name):print a,name
func(a=1,2,3,4)或者,func(1,2,3,4), 则name只能匹配 2,3,4
4 def func(**name)
在函数调用时,name收集任何没有被匹配的关键参数
5 def func(*args,name) 或者 def func(*,name=value) # 3.0
在参数传递时,必须以关键参数的形式将参数传递给name,即kword-only
6
顺序:
函数定义:
1, 位置参数 2,默认参数 3,*name参数 4,kwork-only参数 5,**name参数
参数传递顺序,即调用者将参数传递给函数的顺序:
1, 非关键字位置参数,2,关键字参数
匹配顺序:
1, 首先匹配位置参数,将非关键参数按照位置匹配给位置参数,将前几个参数对号入座,
2, 关键字参数,按照后面的关键字的定义,一个个的对号入座
优先级问题:假设非关键字参数传递给函数后,函数能够接受非关键字参数的参数有:
1, 位置参数 2,默认参数 3,*name参数
那么非关键字参数首先匹配位置参数,其次匹配默认参数,剩余的匹配*name
func(a,b,c=valume1,d=value2,*args,kwonly,**kwargs):
printa,b,c,d,name,args,kwonly,kwargs