Python入門課程NO58課 函數的可變參數
“可變”是指參數的數目是變化的,不確定的。在Python中定義函數時,給形參加上一個"*"或"**"的修飾符,那么該形參就是一個可變形參。
使用*將實參收集為元組:
在Python中定義函數時,在形參前面加一個"*"操作符,那么在執行函數調用時,Python解釋器會將該參數位置處開始的實參全部收集到一個元組當中。舉例說明:
由于可變形參是從左到右進行參數的收集,所以我們在定義函數時,通常是將可變形參置于普通形參的右邊。
使用**將實參收集為字典:
定義函數時,使用**操作符對形參進行修飾,在調用函數時,Python會將該參數位置處開始的實參收集為字典類型。但是必須以關鍵字參數的方式來進行調用。我們將上面的例子修改一下,如下:
*args與**kwargs
*args 與 **kwargs是可變形參名稱的通用寫法,前者用來將實參打包成一個元組類型,后者用來將實參打包成一個字典類型。我們建議在實際定義函數的過程中,可以沿用這種通用的寫法,也可以自行定義可變參數的名稱。
對實參進行解包:
在定義函數時使用*或**,是將實參收集到元組或字典中。而在調用函數時使用*或**來進行修飾,則是將實參進行解包。所謂的解包,就是將數據集合中的元素取出,然后賦值給對應的參數。通常情況下我們用使用*對可迭代對象進行解包,使用**對字典進行解包
使用*對可迭代對象進行解包:迄今為止學過的可迭代對象有:字符串類型,列表,元組,字典,集合。在對字典,集合等類型進行解包時,解包出的元素為對應的鍵名。在實際開發中,通常使用**操作符對字典進行解包。
使用**對字典進行解包:對字典進行解包時,字典中的鍵名與函數中的形參名一一對應,實參即該鍵名所對應的鍵值。
以下舉例說明:
使用*操作符定義可變參數時,Python會將該形參位置處開始的實參收集到元組中。
使用**操作符定義可變參數時,Python會將該形參位置處開始的實參收集到字典中。

- 上一篇
Python入門課程NO57課 函數參數詳解
參數的分類:函數的參數分類兩種,位置參數和關鍵字參數。位置參數與參數的位置相關,這里的位置是指定義函數時的從左到右的參數排列順序。在調用函數時,會自動將實參與形參的位置對應起來。關鍵字參數是指調用函數時,將形參名當做鍵名,將實參當做鍵值,以鍵名=鍵值的語法
- 下一篇
Python入門課程NO59課 匿名函數lambda表達式
匿名函數,也就是沒有函數名的函數。在Python中,通過lambda表達式來定義匿名函數。與之對應的是具名函數。具名函數即為有函數名的函數。通過def來定義的函數,就叫具名函數。也就是我們之前講解的函數。lambda表達式的語法結構:lambda parameters: expression舉例說明:由于