你有没有点过外卖,下单时发现:主食选一份,小菜可以选一两样,饮料可有可无,还能额外备注‘多放葱’‘不要香菜’‘微辣’——这一堆可选、可多可少的项目,其实和编程里‘函数参数可变个数’是一个道理。
函数不是只能吃定份盒饭
平时写函数,常这样写:
def say_hello(name):
print("你好," + name)这就像一份标准盒饭:固定一人份,只收一个名字。但现实里,聚会打招呼可不只喊一个人——“你好,小王!你好,小李!你好,张老师!”这时候,硬要一个个传参就太累人了。
Python 用 *args 和 **kwargs 解放双手
Python 里,*args 接收任意多个位置参数(变成元组),**kwargs 接收任意多个关键字参数(变成字典)。比如:
def order_food(main, *sides, **extras):
print("主食:" + main)
if sides:
print("配菜:" + "、".join(sides))
if extras:
print("加料:" + ",".join([f"{k}={v}" for k, v in extras.items()]))调用它就像点单一样随意:
order_food("米饭", "青菜", "红烧肉", sauce="卤汁", chili="微辣")输出就是:
主食:米饭
配菜:青菜、红烧肉
加料:sauce=卤汁,chili=微辣
生活中哪天不用它?
快递填地址时,“收货人”是必填,“电话”“详细楼号”“门牌号”“是否代收”……这些全看情况;微信发红包,金额固定,但祝福语可以空着、可以写一句、也可以贴三张表情包——背后逻辑,都是‘参数个数不卡死’。函数也一样,灵活才好用。
别被术语吓住:可变参数,就是给函数留了‘加菜窗口’和‘备注栏’。