传递任意数量的实参和传递任意数量的关键字实参
* *args:表示用来接收任意数量的实参,其中,形参*args的星号会让Python创建一个名为args的空元组
,并将接收到的任意数量的实参存储在这个元组中。
* **kwargs:表示用来接收任意数量的关键字实参,其中,形参**kwargs的星号会让Python创建一个名为kwargs的空字典
,并将接收到的任意数量的关键字实参存储在这个字典中。
传递任意数量的实参
Python中,可以向函数传递任意数量的实参,只要我们在形参前面加上一个星号(*)即可。
常写为:*args,args全称为arguments,有参数的意思。
例如:一个用来制作披萨的函数,事先并不知道顾客需要我们放多少配料,那么我写一个形参*toppings就可以了
def make_pizza(*toppings): """打印顾客点的所有配料""" print(toppings)
注意:形参名*toppings中的星号会让Python创建一个名为toppings的空元组,并将收到的所有值封装在这个元组中。
结合使用位置实参和任意数量实参
如果函数需要接受不同类型的实参,可以将接收任意数量实参的形参放在最后。
例如:客人定制披萨需要事先告知披萨尺寸
def make_pizza(size,*toppings): """概述要制作的披萨""" print(f"\nMaking a {size}-inch
pizza with the following toppings:") for topping in toppings:
print(f"-{topping}")
使用任意数量的关键字实参
连续两个星号加上形参表示接收任意数量的关键字实参。
常见写法:**kwargs,全称Keyword Arguments,表示关键字参数。
例如:创建一个接收用户信息的函数
def build_profile(first,last,**user_info): """创建一个字典,其中包含我们知道的有关用户的一切"""
user_info['first_name'] = first user_info['last_name'] = last return user_info