Contents
3.6. 参数的解包,逆向收集¶
* 可以收集元祖,进行传参
** 可以收集字典,进行传参
3.6.1. 演示一个小例子¶
In [48]: x,y,z = 1,2,3
In [49]: x
Out[49]: 1
In [50]: y
Out[50]: 2
In [51]: z
Out[51]: 3
In [54]: def func1(x,y,z):
....: return x+y+z
....:
In [56]: tuple1 = (1,2,3)
In [57]: func1(*tuple1)
Out[57]: 6
代码示例
#!/usr/bin/env python
#-*- coding:utf8 -*-
'''
拆解元祖 提供位置参数
拆解字典 提供关键字参数
'''
def mysum(a,b):
return a+b
print("拆解元祖调用:")
print(mysum(*(3, 4))) #调用时拆解元祖作为位置参数
print("拆解字典调用:")
print(mysum(**{'a':3,'b':4})) #调用时拆解字典作为关键字参数
代码示例
#*args元祖解包
In [6]: def func(a,b,c,d):
...: print(a,b,c,d)
...:
In [7]: args = (1,2)
In [8]: args +=(3,4)
In [9]: func(*args)
1 2 3 4
#**args字典解包
In [6]: def func(a,b,c,d):
...: print(a,b,c,d)
...:
In [10]: args = {'a':1,"b":2,"c":3}
In [11]: args['d']=4
In [12]: func(**args)
1 2 3 4
#*args和**args 任意参数合用
In [3]: def func(a,b,c,d):
...: print(a,b,c,d)
...:
...:
In [4]: func(1,*(2,3),**{"d":4})
1 2 3 4
In [5]: func(*(1,2),**{"c":7,"d":8})
1 2 7 8
In [8]: func(1,*(2,),c=3,**{"d":4})
1 2 3 4
In [9]: func(1,c=10,*(2,),**{"d":4})
1 2 10 4
def foo(name, *nams):
print("name参数:", name)
print("nams参数:", nams)
my_tuple = (1, 2, 3, 4)
foo("hujianli", *my_tuple)
输出结果
name参数: hujianli
nams参数: (1, 2, 3, 4)