Python函数中的必选/默认/可变/关键字/命名参数
Python函数中的必选/默认/可变/关键字/命名参数
一、默认参数
def power(x, n=2): s = 1 while n > 0: n = n - 1 s = s * x return s
n为默认参数,直接赋值
默认参数设置的两个注意事项:
1.必选参数在前,默认参数在后,否则会报错
2.当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。
二、可变参数
在python中,如果我们需要传入不确定数目的参数,就可以利用可变参数
def calc(numbers): sum = 0 for n in numbers: sum = sum + n * n return sum >>> calc([1, 2, 3]) 14 >>> calc((1, 3, 5, 7)) 84
调用的时候,需要先组装出一个list或tuple,但是利用可变参数,调用函数可以进行简化
def calc(*numbers): sum = 0 for n in numbers: sum = sum + n * n return sum >>> calc(1, 2, 3) 14 >>> calc(1, 3, 5, 7) 84
定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变。但是,调用该函数时,可以传入任意个参数,包括0个参数:
三、关键字参数
关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict
def person(name, age, **kw): print('name:', name, 'age:', age, 'other:', kw)
函数person除了必选参数name和age外,还接受关键字参数kw,在调用函数是,可以只传入必选参数
>>> person('Michael', 30) name: Michael age: 30 other: {}
也可以传入任意个个数的关键字参数:
>>> person('Bob', 35, city='Beijing') name: Bob age: 35 other: {'city': 'Beijing'} >>> person('Adam', 45, gender='M', job='Engineer') name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}
关键字参数可以扩展函数的功能。
四、命名关键字
如果对参数数目进行限制的话,就需要命名关键字,例如对上述函数只接收city和job作为关键字参数
def person(name, age, *, city, job): print(name, age, city, job) >>> person('Jack', 24, city='Beijing', job='Engineer') Jack 24 Beijing Engineer
和关键字参数**kw不同,命名关键字参数需要一个特殊分隔符,后面的参数被视为命名关键字参数。命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错:
这几种参数也可以相互组合,灵活利用,熟知这几种参数传递方式,可以避免在参数调用中出错
相关推荐
夜斗不是神 2020-11-17
huavhuahua 2020-11-20
Yasin 2020-11-16
xiaoseyihe 2020-11-16
千锋 2020-11-15
diyanpython 2020-11-12
chunjiekid 2020-11-10
wordmhg 2020-11-06
世事一场大梦 2020-11-17
xiaoseyihe 2020-11-16
Morelia 2020-11-03
CloudXli 2020-11-03
文山羊 2020-10-31
comtop0 2020-10-31
pythonxuexi 2020-10-30
三石 2020-10-29
chaochao 2020-10-27
PythonMaker 2020-10-27