Python中调用函数时带星号的简单应用

        在前面的文章中我们已经说过函数定义时带星号参数的使用,也就是将实参收集成元组(一个星号)和字典(两个星号)。但在事实上也可以执行相反的操作,比如一个做加法的函数,def add(x, y),函数定义的时候是很常见的形参定义,但是我们要相加的两个数在一个元组中param = (1, 2),调用的时候这样调用即可add(*param),表明我们传递的是一个元组对象,需要将元组中的数据传递给形参。写个简单的代码测试下:

#! encoding=utf-8

def test_add(x, y):
    return x + y
    
    
if __name__ == "__main__":
    param = (1, 2)
    print test_add(*param)
    
控制台:

3

       当然函数调用时也可以使用带两个星号的实参,和一个星号的原理相同,只是传递的是一个字典对象给形参,需要注意的是在定义的形参变量名要和传递的字典对象中的key值是一样的,否则无法解析传递的字典。

#! encoding=utf-8

def test_add(x, y):
    return x + y
    
    
if __name__ == "__main__":
    param = {'x' : 1, 'y' : 2}
    print test_add(**param)
    
控制台打印:

3

        其实调用的时候实参前面带星号和定义的时候形参前面带星号是一个互逆的过程,形参带星号,是需要将传递的数据打包成元组或者字典,调用时实参带星号,是要将传递的元组或者字典解析到形参中去。

        最后写一个两者结合的形式,加深下理解。代码如下:

#! encoding=utf-8

def test_all(tuple_str1, tuple_str2, dict_str1, dict_str2, dict_str3):
    return tuple_str1 + tuple_str2 + dict_str1 + dict_str2 + dict_str3
    
    
if __name__ == "__main__":
    param_tuple = ('hello ', 'everyone ')
    param_dict = {'dict_str1' : 'this ', 'dict_str2' : 'is ', 'dict_str3' : 'test'}
    print test_all(*param_tuple, **param_dict)
    

控制台信息:

hello everyone this is test


  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值