Python 中,函數(shù)的應用非常廣泛,,前面章節(jié)中我們已經(jīng)接觸過多個函數(shù),,比如 input() 、print(),、range(),、len() 函數(shù)等等,這些都是 Python 的內置函數(shù),,可以直接使用,。 除了可以直接使用的內置函數(shù)外,Python 還支持自定義函數(shù),,即將一段有規(guī)律的,、可重復使用的代碼定義成函數(shù),從而達到一次編寫,、多次調用的目的,。 比如,在程序中定義了一段代碼,,這段代碼用于實現(xiàn)一個特定的功能,。問題來了,如果下次需要實現(xiàn)同樣的功能,,難道要把前面定義的代碼復制一次,?如果這樣做實在太傻了,這意味著每次當程序需要實現(xiàn)該功能時,,都要將前面定義的代碼復制一次,。正確的做法是,將實現(xiàn)特定功能的代碼定義成一個函數(shù),,每次當程序需要實現(xiàn)該功能時,,只要執(zhí)行(調用)該函數(shù)即可。 通俗來講,,所謂函數(shù),,就是指為一段實現(xiàn)特定功能的代碼“取”一個名字,,以后即可通過該名字來執(zhí)行(調用)該函數(shù)。使用函數(shù),,可以大大提高代碼的重復利用率,。 通常,函數(shù)可以接收零個或多個參數(shù),,也可以返回零個或多個值,。從函數(shù)使用者的角度來看,函數(shù)就像一個“黑匣子”,,程序將零個或多個參數(shù)傳入這個“黑匣子”,,該“黑匣子”經(jīng)過一番計算即可返回零個或多個值。 對于“黑匣子”的內部細節(jié)(就是函數(shù)的內部實現(xiàn)細節(jié)),,函數(shù)的使用者并不需要關心,。就像前面在調用 len()、max(),、min() 等函數(shù)時,,我們只負責傳入?yún)?shù)、接收返回值,,至于函數(shù)內部的實現(xiàn)細節(jié),,我們并不關心。 如圖 1 所示為函數(shù)調用示意圖:圖 1 函數(shù)調用示意圖 從函數(shù)定義者(實現(xiàn)函數(shù)的人)的角度來看,,其至少需要想清楚以下 3 點:
不難看出,,定義函數(shù)比調用函數(shù)要難得多,,而本節(jié)正是教你如何定義函數(shù)的。不過不用擔心,,對于實現(xiàn)過程復雜的函數(shù),,定義本身就很費力,有時候實現(xiàn)不出來也完全正常,。 Python函數(shù)的定義定義函數(shù),,也就是創(chuàng)建一個函數(shù),可以理解為創(chuàng)建一個具有某些用途的工具,。定義函數(shù)需要用 def 關鍵字實現(xiàn),,具體的語法格式如下:def 函數(shù)名(形參列表): 此格式中,各部分參數(shù)的含義如下:
注意,在創(chuàng)建函數(shù)時,,即使函數(shù)不需要參數(shù),,也必須保留一對空的“()”,否則 Python 解釋器將提示“invaild syntax”錯誤,。另外,,如果想定義一個沒有任何功能的空函數(shù),可以使用 pass 語句作為占位符,。 下面程序定義了兩個函數(shù):
Python函數(shù)的調用調用函數(shù)也就是執(zhí)行函數(shù),。如果把創(chuàng)建的函數(shù)理解為一個具有某種用途的工具,,那么調用函數(shù)就相當于使用該工具。函數(shù)調用的基本語法格式如下所示: 函數(shù)名([形參值]) 其中,,函數(shù)名即指的是要調用的函數(shù)的名稱,;形參值指的是當初創(chuàng)建函數(shù)時要求傳入的各個形參的值。需要注意的是,,創(chuàng)建函數(shù)有多少個形參,,那么調用時就需要傳入多少個值,且順序必須和創(chuàng)建函數(shù)時一致。即便該函數(shù)沒有參數(shù),,函數(shù)名后的小括號也不能省略,。例如,調用前面創(chuàng)建的那 2 個函數(shù),,執(zhí)行代碼如下:
運行上面程序,將可以看到如下運行結果: result: 9
為函數(shù)提供說明文檔前面介紹過可以使用 Python 內置的 help() 函數(shù)查看其他函數(shù)的幫助文檔,,我們也經(jīng)常通過 help() 函數(shù)查看指定函數(shù)的幫助信息,這對于 Python 開發(fā)者來說非常重要,。我們還可以為函數(shù)編寫說明文檔,,只要把一段字符串放在函數(shù)聲明之后、函數(shù)體之前,,這段字符串將被作為函數(shù)的部分,,這個文檔就是函數(shù)的說明文檔。 程序既可通過 help() 函數(shù)查看函數(shù)的說明文檔,,也可通過函數(shù)的 __doc__ 屬性訪問函數(shù)的說明文檔,。下面程序示范了為函數(shù)編寫說明文檔:
Help on function my_max in module __main__: |
|