python應用(6):函數
在流程很簡單的時候,或者流程不簡單但我們不需要考慮開發維護成本的時候,平面地組織你的代碼就夠了,不用費腦子,不需要考慮層次或重用的東西。當事情變得越來越複雜時,當同行對代碼質量要求越來越高時,有一些重要的概念就出現了,而重用就是其中一個。重用就讓某段代碼可以方便地反覆使用。為了重用,有必要認真考慮怎麼封裝,這是設計層面的事情,而函數是常用或重要的封裝方式,雖然不是唯一的封裝方式。
本文介紹流程的函數封裝,以及python的內置函數。
函數,是實現了特定功能的代碼塊的集合。類或對象,也可以重用。但如果從機器語言的角度來說,類或對象(在編譯或解釋後)都不復存在,而函數,也就是指令塊,仍然存在,且可能被反覆執行,所以函數是封裝的基礎元素。使用函數對流程進行封裝,可以讓程序更加模塊化,而模塊化是系統設計的重要基礎。當然,函數不是模塊化的唯一手段。
(1)定義函數
python中定義函數,如下圖:
函數,有兩個特徵,一個是參數,一個返回值。
在用def定義函數時,可以在括號內定義參數,這個叫形參(在函數調用時,傳遞的參數叫實參),比如:
執行結果如下:
在定義函數時,可以指定默認參數,意思是,調用時如果不傳參數,那就使用默認值,比如這樣定義一個函數:
執行效果是這樣的:
以上函數調用時,已經使用了關鍵字參數,也就是調用時指定函數形參的名字,以”paramer1=xxx”的形式進行傳遞,這種方式經常使用,因為可以明確給哪個參數傳遞了哪個值,而且無順序要求。
函數還有一種參數,叫不定長參數,適用於參數不明確的情景,比如這樣定義與調用:
執行效果如下:
以上介紹了函數如何定義,以及它的參數特徵。
函數除了參數這個特徵,還有一個特徵是返回值,返回值使用關鍵字return來返回。
一個函數如果沒有return語句,那就相當在最後加了這一句:
return
以下是一個使用返回值的示例:
執行效果是這樣的:
(2)lambda函數
以上函數的定義,都使用def,正而八經地定義了一個有名字的函數,而python還提供了一個實用的特徵,叫lambda函數。lambda函數也叫匿名函數,一般是較短小的函數。
使用lambda關鍵字時,不指定函數名,只指定函數體,比如可以這樣使用:
再比如這個示例:
(3)內置函數
以上介紹的是自定義函數,除了自定義函數,python還提供了一系列的內置函數,方便編碼時直接調用。
比如,有這樣的內置函數(此圖來源於 //www.runoob.com/python/python-built-in-functions.html ):
對於每個內置函數的作用,以下是一種查看的辦法–使用內置函數help()來查看,比如輸入:
help(len)
可以看到這樣的提示輸出:
也就是查看了內置函數len()的作用。
好了,總結一下,本文介紹了流程的函數封裝,包括函數的參數與返回值的特徵,特別介紹了lambda函數,文章最後簡單介紹了python提供的內置函數。see you