python如何定义参数量可变的函数

参数默认值函数

如果我们想要在调用函数时,少输入一些变量。我们可以在定义函数值,输入一些默认的参数值:

def add(a, b = 2, c = 3):
    return a + b + c
print(add(2))
output: 7

add函数有3个变量,那么我们在定义它的时候,后俩个变量被我们赋予了默认参数值分别是2和3。若没有在调用时,明确给出后俩个变量的参数值,那么python会自动调用默认参数值。

合法调用方式:
add(2),add(2,3),add(2,4,5)
非法定义方式:
def add(a,b = 2, c):
	return a + b + c

但是要注意,当你定义了第一个变量的默认参数值后,那么后面的变量必须全部都带有默认参数值。

参数量可变的函数定义

在python中有一个 * 运算符,来实现可变参数的函数定义。

*的用法,列表的解包:
arg = [2,4]
for i in range(*arg):
	print(i)
字典的解包,直接为函数提供关键字以及参数:
d = {'a':1,'b':2,'c':3}
def add(a,b,c):
	return a + b + c
print(add(**d))
output:6

当存在一个形式为 **name 的最后一个形参时,它会接收一个字典,其中包含除了与已有形参相对应的关键字参数以外的所有关键字参数。 这可以与一个形式为 *name,接收一个包含除了与已有形参列表以外的位置参数的 元组 的形参组合使用 (*name 必须出现在 **name 之前。) 例如,如果我们这样定义一个函数:

def cheeseshop(kind, *arguments, **keywords):
    print("-- Do you have any", kind, "?")
    print("-- I'm sorry, we're all out of", kind)
    for arg in arguments:
        print(arg)
    print("-" * 40)
    for kw in keywords:
        print(kw, ":", keywords[kw])

我们可以这样去调用它:

cheeseshop("Limburger", "It's very runny, sir.",
           "It's really very, VERY runny, sir.",
           shopkeeper="Michael Palin",
           client="John Cleese",
           sketch="Cheese Shop Sketch")

当然它会打印:

-- Do you have any Limburger ?
-- I'm sorry, we're all out of Limburger
It's very runny, sir.
It's really very, VERY runny, sir.
----------------------------------------
shopkeeper : Michael Palin
client : John Cleese
sketch : Cheese Shop Sketch

我们只需要注意,参数的调用顺序与你定义的字典或者列表的参数顺序是相同的。

发布了11 篇原创文章 · 获赞 17 · 访问量 3112

猜你喜欢

转载自blog.csdn.net/weixin_43208423/article/details/105060089