解包劈狐,個(gè)人理解就是對(duì)序列進(jìn)行拆分勤哗,賦值給對(duì)應(yīng)的變量
最經(jīng)典的莫過(guò)于兩個(gè)數(shù)交換彼念,一般我們是通過(guò)一個(gè)中間變量把兩個(gè)數(shù)交換屡律,在python中可以直接通過(guò)解包的形式直接交換兩個(gè)數(shù)
如:
In [92]: a,b=1,3
In [93]: a
Out[93]: 1
In [94]: b
Out[94]: 3
In [96]: a,b=3,1
In [97]: a
Out[97]: 3
In [98]: b
Out[98]: 1
In [99]:
其實(shí) a, b = 1, 3 就是 a, b = (1, 3), 把序列中對(duì)應(yīng)的元素賦值給a腌逢,b
再看一組例子
In [99]: head, *tail = [1,2,3,4,5]
In [100]: head
Out[100]: 1
In [101]: tail
Out[101]: [2, 3, 4, 5]
In [104]: head, *_, tail = [1,2,3,4,5]
In [105]: head
Out[105]: 1
In [106]: tail
Out[106]: 5
In [107]: _
Out[107]: 5
In [108]: head, *mid, tail = [1,2,3,4,5]
In [109]: mid
Out[109]: [2, 3, 4]
In [120]: head, _, *mid, tail = [1,2,3,4,5]
In [121]: head
Out[121]: 1
In [122]: mid
Out[122]: [3, 4]
In [123]: tail
Out[123]: 5
In [115]: h, *t = ['a']
In [116]: h
Out[116]: 'a'
In [117]: t
Out[117]: []
In [124]: a, (b, c), d = [1, [2,3],4]
In [125]: a
Out[125]: 1
In [126]: b
Out[126]: 2
In [127]: c
Out[127]: 3
In [128]: d
Out[128]: 4
從上面可以感受到解包的強(qiáng)大之處,如果元素個(gè)數(shù)有多個(gè)疹尾,想解包后放在一個(gè)變量里面就要使用*變量名
上忍,_
用作變量名時(shí)表示丟棄這些變量骤肛,python中單個(gè)_表示上一個(gè)命令的返回值纳本,*變量名
解包后都是一個(gè)列表
封包
封包就是把多個(gè)元素打包賦值給一個(gè)變量,函數(shù)中返回多個(gè)值就是一個(gè)封包
In [118]: v = 1,2,3
In [119]: v
Out[119]: (1, 2, 3)