可变长参数
在很多情况下,我们对函数计算的逻辑需求是可以同时处理不定长的多个对象,例如:想定义一个可以计算任意长度的对象相加,则需要使用可变长参数。python中使用一个星号标注可变长参数,此时,传入的多个参数将被封装为一个元组传入函数内:
def sum_2(*num): # 此时*num就是一个可变长参数
r = 0
for i in num: # 但可变长参数名仍然是num而非*num
r += i
return(r)
sum_2(1, 2, 3) # 该参数位上可传入多个参数,最后封装为一个元组传入函数
输出:6
可变长关键字参数
对于同时带有参数名和实际传入对象的关键字参数,也可一次性传入多个,即可变长关键字参数。与可变长参数不同,可变长关键字参数需要用两个星号来进行说明,同时实际传入过程是python会将其转化为字典进行传入:
def kw(**dic):
return(dic)
kw(a=1, b=2, c=3)
输出:{‘a’: 1, ‘b’: 2, ‘c’: 3}
可变长关键字参数常用于结构化输出打印信息的场景,例如统计学生信息时,有一栏为兴趣爱好,而学生兴趣爱好可以是一个或多个,此时就可食用可变长关键字参数,同时传入参数名和对应的真实值:
def student(name, **interest):
print('name:', name, 'interest:', interest)
student('ximen', sport='football', eat='apple')
输出:
name: ximen interest: {‘sport’: ‘football’, ‘eat’: ‘apple’}