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

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