Python學習入門(9)—函數

(本號正在連續推出以Python官網文檔為主線的系統學習Python的系列文章或視頻,感興趣的朋友們歡迎搜索關注。在這裡學習Python事半功倍!本文及後續文章如無特別聲明均以Windows平臺作為演示平臺,Python版本為:3.8.1)


函數的定義和調用方式

示例:

Python學習入門(9)—函數

【示例】函數的定義和使用

如上,函數定義形式為:

<code>def 函數名(形參列表):
函數體/<code>

函數體內同級別的語句具有相同的縮進。函數調用形式為:函數名(實參列表)。

【注】定義函數時參數列表中的參數稱為形參,調用函數時使用的參數稱為實參。

指定形參接受的實參類別

通過在形參前加上*或**來指定該形參接受tuple(list)或dict實參(這幾種類型在後續文章中會詳細講解)。定義函數時,標示了*,**,以及未標示*或**的形參可以出現其中任一種,兩種或全部。注意:標示了**的形參只能出現在形參列表的尾端,標示了*的形參只能出現在標示了**的形參(如果有的話)的左邊且在未標示*或**的形參(如果有的話)的右邊。示例如下:

Python學習入門(9)—函數

【示例】指定形參接受實參的類別

使用*標示的形參出現在函數形參列表尾端時可以實現函數接受可變長實參的功能,示例:

Python學習入門(9)—函數

【示例】接受變長實參

具有缺省值的形參

Python函數支持為參數指定缺省值。當函數的一些參數的值在多數情況下為特定值時,就可在定義函數時將這些特定值指定為對應參數的缺省值。這樣在多數情況下就可以使用比定義要求少的參數來調用函數。當參數的缺省值不能滿足實際情況時,在調用時為其指定新值即可。為參數提供缺省值增加了函數使用的靈活性。示例:

Python學習入門(9)—函數

【示例】參數的缺省值

在定義函數時,參數列表中一旦出現了具有缺省值的形參,其後的所有其它形參(如果有的話)必須都指定缺省值。也就是,具有缺省值的形參只能集中出現在參數列表的尾部。上面示例中演示了具有確省值參數函數的錯誤定義。在調用函數時,如果只使用了位置實參,則指定的實參依次從左向右賦給相應的形參,如果實參個數少於形參個數,則尾端沒有被賦值的形參使用缺省值,需要使用缺省值但沒有指定缺省值的會報錯。

傳參方式:位置實參方式和關鍵字實參方式

Python學習入門(9)—函數

【示例】傳參方式

函數列表的特殊參數

在定義函數時可以用特殊的參數/和*來指定形參列表中那些形參是隻能按位置實參方式傳參,那些只能按關鍵字實參方式傳參。/和*是可選的。如果使用了/,則其左邊的形參只能按位置實參方式傳參,其右邊的形參不作限制。如果使用了*,則其右邊的形參只能以關鍵字實參的方式傳參,其左邊的形參不作限制。示例如下:

Python學習入門(9)—函數

【示例】函數列表的特殊參數

對列表類型參數的拆包

前面示例中定義和調用函數時,使用過形如*a的參數,其中a為tuple或list。這一形式表示對list或tuple參數實施拆包。*(a1,a2,a3)操作結果為a1,a2,a3。注意:這一操作只能用於函數定義和調用時使用的list或tuple類型的參數,其它情形不支持。

匿名函數(lambda表達式)

Python中可以使用lambda表達式實現匿名函數。lambda表達式的定義形式為: lambda parameters : expression,其中lambda為關鍵字,expression只能為單個表達式。lambda表達式定義了一個匿名的函數對象,可以使用在任何需要函數對象的地方。示例如下:

Python學習入門(9)—函數

【示例】lambda表達式

示例中,sort排序函數使用lambda表達式作為函數對象來指定了排序使用的字段,即以比較每個tuple中後一個元素作為所有tuple排序的依據。sort函數是list類型的方法,將在後續文章中詳細講解。

文檔字符串

在定義函數時,一個良好的設計習慣就是在開始處說明該函數的參數和返回值類型以及功能,這樣可以方便之後的使用和維護。在Python中這可以通過文檔字符串來實現:在函數體開始處使用引號引用的字符串作為說明文檔。可使用函數對象的__doc__屬性查看文檔字符串。

注意:1. 引用文檔字符串的左引號也要使用縮進且與第一行代碼相同。2. 多行字符串應使用三引號以支持換行符。

示例如下:

Python學習入門(9)—函數

【示例】文檔字符串

函數註釋

函數註釋信息是關於用戶定義函數市使用的類型的完全可選的元數據信息。欲使用函數註釋信息則定義函數時需為每個參數及返回值指定類型。以arg:type的形式註釋參數信息,以->type的形式註釋返回類型信息。函數註釋信息可以使用函數對象的 __annotations__屬性查看。示例如下:

Python學習入門(9)—函數

【示例】函數註釋


【結束】


Python學習入門(9)—函數


分享到:


相關文章: