浅析Python中不定长参数

浅析Python中不定长参数


前言

昨天偶然看到CSDN上一篇关于Python装饰器的博文,其中涉及到Python不定长参数的问题,故总结整理一下。


Author:qyan.li

Date:2021.11.23

一、Python不定长参数两种形式
  1. *args->args并非重点,重点在于前面的*,此种方式表示将传入参数打包为tuple形式
  2. **kargs->kargs并非重点,重点在于前面的**,此种方式表示将传入参数打包为dictionary的形式

简单代码示例:

def add(*args, **kargs):
    print(args)
    print(kargs)

def main():
    add(1,2,zhangsan = 10,lisi = 20)

if __name__ == '__main__':
    main()
    
'''
output->
(1, 2)
{'zhangsan': 10, 'lisi': 20}

'''
二、Python不定长参数的传入

Python中不定长参数的传入同样以tuple的方式传入,调用时以tuple的方式调用

def add(*args):
    print(args)
    sum = 0
    for element in args:
        sum += element
    return sum

def main():
    result1 = add(1,2,3,4,5,6)
    print(result1)
    print('------------------')
    result2 = add(1,2,3,4,5,6,7,8,9)
    print(result2)

if __name__ == '__main__':
    main()
    
'''
(1, 2, 3, 4, 5, 6)
21
------------------
(1, 2, 3, 4, 5, 6, 7, 8, 9)
45->

'''
三、Python不定长参数‘解铃’和‘系铃’

Python中不定长参数可以将多个输入打包为tuple,则可以将数据结构解铃为单独的数据作为输入参数

def add(*args):
    sum = 0
    for element in args:
        sum += element
    return sum

def main():
    lst1 = [1,2,3,4,5,6]
    lst2 = [9,8,7,6,5,4,3,2,1]

    result = add(*lst1,*lst2)
    print(result)

if __name__ == '__main__':
    main()
    
'''
output->
66
'''

Tips : 假设上述代码改为result = add(lst1,lst2),代码会报错:

TypeError: unsupported operand type(s) for +=: 'int' and 'list' lst1 和 lst2 被封装为tuple,不能和sum = 0, int 类型的数据执行加法操作。

参考文献:

Reference: https://blog.csdn.net/u012102306/article/details/52250028

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值