一、默认参数:
默认参数,注意一点:必选参数在前,默认参数在后,否则Python的解释器会报错
二。可变参数:
可变参数,意思就是传入参数的个数是可变的,可以是1个,2个,无数个;传入参数类型为list或者tuple;举例,给定一组数字a,b,c……,请计算a2 + b2 + c2 + ……,由于参数个数不确定,所以我们可以把 这组数据作为一个数组或者元祖传进来,但传参时必须要组装出一个list或者tuple,如下
>>>def sum(num):
s = 0
for i in num:
s = s + i * i
return s
>>>sum([1,2,3])
但如果使用可变参数,就会简易不少,只需参数前面加个*号,如下
>>>def sum(*num):
s = 0
for i in num:
s = s + i * i
return s
>>>sum(1,2,3)
但如果已经存在一个数组了,例如li=[1,2,3]。传入的时候可以在数组前面加个*号即可。如:sum(*li) #14
*li表示把li这个数组所有元素作为可变参数传进去
三、关键字参数:
可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
>>> def person(name,age,**kw):
print("name:",name,"age:",age,"other:",kw)
>>> person("bbj",23,city="hefei",habit="basketball")
name: bbj age: 23 other: {'city': 'hefei', 'habit': 'basketball'}
>>>
关键字参数按我的理解就是在调用时可以传入无数个自命名的参数,这里的关键字也就是自己命名的意思。所有的关键字参数会自动组装成一个字典。
四、命名关键字参数:
同样是关键字参数,为何又加入“命名”两个字呢,意思就是在函数定义时给定好有哪些参数。
>>> def person(name, age, *, city, job):
print(name, age, city, job)
>>> person('bbj',23,city='hefei',job='engineer')
bbj 23 hefei engineer
>>>
*后面的city、job都是命名关键字参数,在调用的时候与位置参数不同的是必须给出参数名否则调用时会报错。如果有可变参数在之前的时候则不需要额外的*,