1. 程式人生 > >python3拆包詳解

python3拆包詳解

對於可迭代物件,如元組、列表、字串、集合、字典這些可迭代物件都可以被拆包,拆包是指將一個結構中的資料拆分為多個單獨變數中。拆包的方式大致有兩種,一種是以變數的方式來接收,另一種是用‘*’號。下面先講第一種方式。

以變數的方式接收一定要注意左右兩邊元素的個數和變數個數要統一,不然會報錯。先以一個元組為例,如下一個元組:

a = ('computer',2,8000,(2018,10,16))

這個元組的意思是一個人買了兩臺電腦,一臺8000人名幣,於2018年10月16日購買。

如果我們僅以兩個變數來接收的話,看看會怎樣?

現在我們用四個變數來接受這個元組,將其資料拆成一個個單獨的資料。

如果我們只想獲取其價格和購買日期,前面兩個元素我們可以用一個變數來接受,這個變數由萬用字元構成。

很明顯,一個萬用字元構成的變數可以替代前面的兩個變數,但其本身沒有什麼意義,故在互動模式下直接輸入*_會報錯。萬用字元構成的變數可以替代指定範圍內的所有變數,這為取出指定元素帶來了便利。

與其他可迭代物件不同的是,字典拆包出來的僅僅是key,如下所示:

第二種方式用*來拆包就比較粗暴了,如下所示:

可以發現,用*給字典拆包,拆出的元素還是key。

其實還有一種拆包,它是鑑於函式來實現的,這種函式也同樣實現了裝包這個功能。*args和 **kwargs這兩個引數相信大家都不陌生,一個是用來接收多餘的未命名引數,另一個是用來接收形參中命名引數。args它是一個元組,它把傳入的資料放進了args元組中,而kwargs是一個字典,故裝包的意義就是把未命名的引數和命名的引數放在元組或字典中。