拆包是指將一個結構中的數據拆分為多個單獨變量中。
以元組為例:
>>> a = ('windows', 10, 25.1, (2017, 12, 29))
假設數據的意思是購買windows 10 份, 每份價值25.1刀。數據獲取時間是2017年12月29日。
我們需要獲取該數據中每份的價格:
>>> a[2]
也可以使用拆包的方法:
>>>os_type, number, price, dat = a
>>>price
注意的問題拆包對象必須是可迭代的比如tuple和list。
第二個問題:我們只關心價格和日期,不關心系統和數量:
用一個不使用的變量,然后通過適配符號*,統配前兩項。
>>> *_, price, dat = a
>>> price
>>>dat
第三個問題,如果我們只關心價格和月份,如何解開包?
>>> *_, price, (_, m, d) = a
>>> price
>>> m
注意解包在python中都支持,但是使用*統配多個數值python3中開始支持。所以使用*時候注意python版本信息。
問題: 如果左邊和右邊個數不匹配,沒有使用*,結果會是什么:
ValueError: too many values to unpack
>>> _, price, (*_, m, d) =a Traceback (most recent call last): File "<pyshell#10>", line 1, in <module> _, price, (*_, m, d) =a ValueError: too many values to unpack (expected 3)