方法的参数
位置参数、默认参数、可变参数、键字参数、命名关键字参数
位置参数就是最普通的
def func(a,b)
默认参数就是 如果你调用这个方法的时候没有提供这个参数,那么会用它的默认值
def func(a,b,c=0)
调用
func(1,2)
调用的时候只传递了2个参数,被 a和b对应了,c没有传值,就按0来算
如果有两个默认参数
def func(a,b,c=0,d=1)
调用的时候
func(1,2,3) 3赋给c,d用默认的
func(1,2,3,4) 3赋给c,4赋给d
func(1,2,d=4) 3用默认的,4赋给d
注意 默认参数的默认值必须为不可变对象,否则如果方法中对默认参数做了修改,下一次调用这个方法的时候,这个默认参数的值会变成上一次调用更改以后的值。这个与java不一样,java一个方法调用以后他里面变量的声明周期就会结束了,下一次调用还是最初声明的值,python会记住上一次的值。
可变参数类似于java中的Object...param,写法就是参数名前面加一个 *
def func(*args)
调用的时候分两种
一:
func(1,2,3,4,5)
二:
a = (1,2,3,4,5)
func(*a)
这时 args 接收到传递的值以后 是一个元组
关键字参数即传入的参数为 0个或大于0个的 dict(java中的map)
def func(**kw)
调用
一
func(a='a',b='b')
二
a = {name='zzh',city='BJ'}
func(**a)
命名关键字参数,就是规定你必须传入指定 key的 map
def func(*,a,b) 如果参数中没有 *args那么命名关键字参数必须跟在*,后面。
def func(*args,a,b) 如果有就不用加 *
调用
func(a='1',b='2') //必须传 key等于a,以及key等于b的参数
参数组合
在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数(位置参数)、默认参数、可变参数、命名关键字参数和关键字参数。