浅析Python中不定长参数
前言
昨天偶然看到CSDN上一篇关于Python装饰器的博文,其中涉及到Python不定长参数的问题,故总结整理一下。
Author:qyan.li
Date:2021.11.23
一、Python不定长参数两种形式
- *args->args并非重点,重点在于前面的*,此种方式表示将传入参数打包为tuple形式
- **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