函式的拆解
拆解的技術也能夠應用在函式中,讓我們一起來看看吧。
拆解回傳值
讓我們考慮含有多個描述年齡句子的文件 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)
利用星號 *
我們可以將 可迭代 的引數拆解並 平行賦值 給每個參數!