Python 传递任意数量的实参

在定义函数的时候如果你不知道该函数在使用的时候要接收多少的实参怎么办?

好在python提供了可以接收任意数量的实参的操作。

# def sandwitch(*ingredents):
#     print("The ingredient of the sandwitch including")
#     for ingredent in ingredents:
#         print(ingredent)
# sandwitch('cabbage','prock','beef')
# sandwitch('mutton','fish')
*ingredents 是定义一个名为 ingredents 的空元组,然后在函数被调用的时候将接收到的所有值(实参)放进该元组中,由此一来便实现了传递任意数量的实参的操作。

注:
当位置实参和任意数量的实参相结合使用时,要将接纳任意数量的实参的形参(元组)要放在最后面,因为Python会先匹配位置实参,然后将剩下的实参收集到最后一个形参(元组)中。
比如上面那个例子,还要加上尺寸size的话,函数的定义就应该如下
def sandwitch(size,*ingredents):

 

 

 

此外Python还提供了“使用任意数量的关键字实参 ”,简单地说就是可以将一个字典序作为形参。如下一个例子

def build_porfile(first,last,**user_info):
    profile={}
    profile['first_name']=first
    profile['lase_name']=last
    for key,value in user_info.items():
        profile[key]=value
    return profile

user_info=build_porfile('albert','einstein',location='prinecton',field='physics')

print(user_info)

 

其中形参中的 **user_info 定义的是一个空字典,并将在函数调用时收到的所有的 key和value封装到该字典中。

或者可以这样子理解,在接收任意数量的实参的定义中只需存入某一个值,所以用的是 一个“*” (元组),在任意数量的关键字实参时用到的是字典,需要存的是两个值 key和 value,所以是 double star。

 

以上的内容学习自《Python:从入门到实践》,挺好的一本书,可以作为基础入门的学习资料

转载于:https://www.cnblogs.com/Guhongying/p/10010888.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值