让我们用一些有趣且相关的示例分解 *args和** kwargs!
1: *args-争论的冰淇淋圣代
想象一下您在冰淇淋店里,您想用尽可能多的浇头来创建终极圣代。好吧, *args就像那些无尽的浇头。您不知道您会选择多少个,也不需要预先指定它们。
def make_sundae(base_flavor, *toppings):
sundae = f"A {base_flavor} sundae with:"
for topping in toppings:
sundae += f" {topping}"
return sundae
print(make_sundae("vanilla", "chocolate sauce", "sprinkles", "whipped cream"))
输出:
A vanilla sundae with: chocolate sauce sprinkles whipped cream
在此示例中,*toppings
参数收集了您提供的所有额外浇头,并将它们捆成元组。这就像制作带有任何数量的浇头的圣代,而不知道有多少个。
2:** Kwargs-党的派对策划者
现在,让我们计划使用**夸尔格斯的聚会。您是主持人,您希望一切都正确,从装饰到音乐。 **夸尔格斯就像拥有具有特定详细信息的项目清单。
def plan_party(**details):
plan = "Party Details:"
for key, value in details.items():
plan += f"\n- {key}: {value}"
return plan
print(plan_party(theme="tropical", guests=50, music="DJ Bob", snacks="finger foods"))
输出:
Party Details:
- theme: tropical
- guests: 50
- music: DJ Bob
- snacks: finger foods
在此示例中,**details
参数将命名参数及其值收集到字典中。这就像计划一个有很多不同方面的聚会,每个方面都有其特定信息。
3:组合*args
和**kwargs
-致命的表演
现在,让我们拿出大枪,并在一个功能中结合 *args和** kwargs。想象一下,您正在订购带有各种浇头的可自定义汉堡,您还想记下特定的偏好。
def custom_burger(base, *toppings, **preferences):
burger = f"You ordered a {base} burger with:"
for topping in toppings:
burger += f" {topping}"
burger += "\nPreferences:"
for key, value in preferences.items():
burger += f"\n- {key}: {value}"
return burger
print(custom_burger("beef", "cheese", "bacon", dressing="mayo", sides="fries"))
输出:
You ordered a beef burger with: cheese bacon
Preferences:
- dressing: mayo
- sides: fries
在此示例中,您在同一功能中都使用 *args和** kwargs。 *toppings
将额外的浇头作为元组收集,而**preferences
则将命名为exexences作为字典。这就像用各种浇头制作汉堡并指定您的独特偏好。
,你有! *Args和** Kwargs是您在Python中处理灵活函数参数的动态二重奏。就像创建自定义的圣代,计划聚会或建立完美的汉堡一样,这些概念可以让您处理各种能力和精致的投入。
直到下一次,请继续编码并保持微笑,因为Python就是要使魔术实现! ð
愉快的编码!!!