函式的拆解

拆解的技術也能夠應用在函式中,讓我們一起來看看吧。

拆解回傳值

讓我們考慮含有多個描述年齡句子的文件 text.txt

Bill is 28 years old
Cynthia is 18 years old
dokelung is 26 years old

若我們想要讀取該文件並且建立一個以名字為 key ,年齡為值的字典,我們可以這樣做:

age_dic = {}

with open('text.txt') as fp:
    for line in fp:
        name, _, age, _, _ = line.strip().split()
        age_dic[name] = int(age)

在假設該文件中的句子都擁有相同的句型且沒有例外的狀況下,split 會回傳一個字串清單,其中的字串都是由原始句子切割而來,而且所有句子 split 出的清單都具有相同的長度和對應順序。

這時候我們就可以透過拆解取得重要的項目,值得注意的是,我們常會用底線 _ 來當作 佔位符,負責接收不重要的值,這種變數我們也稱為 啞變數

拆解引數

在 Python 中,函式的引數也能夠進行拆解,我們考慮以下函式:

def add3(a, b, c):
    return a + b + c

這個函式會執行一個三元的加法,假設我們已經有若干組運算元且封裝成 tuple 的形式:

data = [
    (0, 0, 0),
    (1, 2, 3),
    (4, 5, 6),
]

我們要依序求出每個運算的結果可以這樣做:

for d in data:
    result = add3(d[0], d[1], d[2])
    print(result)

但下面的做法會更簡潔一點:

for d in data:
    result = add3(*d)
    print(result)

利用星號 * 我們可以將 可迭代 的引數拆解並 平行賦值 給每個參數!

results matching ""

    No results matching ""