Python参数主要分为位置参数、默认参数、可变参数、关键词参数、命名关键词参数,最后还有关键词组合。
-
位置参数
-
def test(a,b): c=a*b print(c)
这样最基础的参数就是位置参数,位置参数也可以传入多个,调用函数的时候需要传入对应个数的位置参数。
-
默认参数
-
def test(a,b=3): c=a*b print(c)
- 也就是对位置参数赋予默认的值,如果调用函数只需要传入一个参数即可test(3),当然也可以test(3,4)。
- 必须注意的是位置参数在前,默认参数在后这个规则,变动大的参数在前,变动小的参数在后。
- 默认参数一定要指定不变得对象,如果参数有变则函数调用会出错。
-
可变参数
- 顾名思义就是传入的参数可变:
def test(*numbers): a=0 for b in numbers: a=a+b print(a)
- 为达到参数的可变必须传入list或者tuple,所以要在参数前面加一个* 的符号来表示传入可变参数,这样调用函数可以是test(),也可以是test([1,3,4]),如果需要传入一个list=[2,3,4] 那么需要test(*list)这样来传入,元组也一样。
-
关键词参数
- 可变参数允许传入0个或者是第一个参数,而关键词参数和可变参数类似,可以传入一个dict,传入时候回自动给数据组装成一个dict。
def test(a,**kw): print(a,kw)
-
在函数中可以只传入位置参数,关键词参数可以不传也可以传test(1),也可以传入test(1,a='ddd'),调用结果则为1a='ddd'。
-
关键词参数和可变参数一样也可以对一个aa={name:'aaa',age:111},如何将这个dict传入函数中,test(1,**aa)。
-
命名关键词参数
- 如果要限制某个或某几个关键词参数必须传入则需要使用命名关键词参数。
def test(a,b,*,name,age): print(a,b,name,age) def test01(a,b,*dd,name,age): print(a,b,dd,name,age) def test02(a,b,*,name='jeck',age) print(a,b,name,age)
- 上面是命名关键词参数四种方法。
-
关键词组合
- 上面介绍了Python五种参数,这五种参数可以进行组合使用但需要注意的是顺序,位置参数,默认参数,可变参数,命名关键词参数,关键词参数。
def test(a,b='sds',*c,**d): print(a,b,c,d)
-
这种定义可以直接传入tuple和dict
args = (1, 2, 3, 4) kw = {'d': 99, 'x': '#'} test(*args, **kw) a = 1 b = 2 c = 3 args = (4,) kw = {'d': 99, 'x': '#'} args = (1, 2, 3) kw = {'d': 88, 'x': '#'} test(*args, **kw) a = 1 b = 2 c = 3 d = 88 kw = {'x': '#'}
但是这样传入不建议,很难理解。