python之拆包与装包
a,b = (11,22) #一个元组分别赋值给a和b print(a) print(b) num = "saldkfjks" for i,name in enumerate(num): #enumerate():括号内可以是一个字符串,列表,元组,字典(字典取的是key的值) print(i,name) def text1(a,b,*args): *args是一个元组形式,将实参中多余的元素(除去键值对形式)接收 print(a) print(b) print(args) #打印出来的是一个元组 print(*args) #打印出来的是一个元组的拆分 print("-"* 50) text2(args) #传递的是一个元组(相当于一个元素) print("*" * 50) text2(*args) #传递的是一个元组的拆分(相当于多个元素) def text2(a,*args): print(a) print(args) print(*args) text1(1,2,3,4,5,6)
结果:
11 ----a 22 ----b
0 s (i与name)
1 a
2 l
3 d
4 k
5 f
6 j
7 k
8 s
1 2 (3, 4, 5, 6) 3 4 5 6
解释一下:1,2分别传给a,b;剩下的多余的元素以一个元组的形式传递(args代表一个元组;*args代表拆分元组) -------------------------------------------------- (3, 4, 5, 6) #这次传递的是一个元组,所以把这个元组当作一个元组传递a,那么*args相当于为空 () ************************************************** 3 (4, 5, 6) 4 5 6
这次传递的一个拆分后的元组即:3,4,5,6
2 再来看看**kwargs
def run(a,**kwargs): #接收的是一个字典 print(a) print(kwargs) #打印一个字典
print(**kwargs) #不支持这种形式的打印,报错
run(1,m =19,n=20) run("sd",name="张三")
结果:
1 {'m': 19, 'n': 20} sd {'name': '张三'}