python應用(6):函數

在流程很簡單的時候,或者流程不簡單但我們不需要考慮開發維護成本的時候,平面地組織你的代碼就夠了,不用費腦子,不需要考慮層次或重用的東西。當事情變得越來越複雜時,當同行對代碼質量要求越來越高時,有一些重要的概念就出現了,而重用就是其中一個。重用就讓某段代碼可以方便地反覆使用。為了重用,有必要認真考慮怎麼封裝,這是設計層面的事情,而函數是常用或重要的封裝方式,雖然不是唯一的封裝方式。

本文介紹流程的函數封裝,以及python的內置函數。

函數,是實現了特定功能的代碼塊的集合。類或對象,也可以重用。但如果從機器語言的角度來說,類或對象(在編譯或解釋後)都不復存在,而函數,也就是指令塊,仍然存在,且可能被反覆執行,所以函數是封裝的基礎元素。使用函數對流程進行封裝,可以讓程序更加模塊化,而模塊化是系統設計的重要基礎。當然,函數不是模塊化的唯一手段。

(1)定義函數

python中定義函數,如下圖:
函數定義

函數,有兩個特徵,一個是參數,一個返回值。

在用def定義函數時,可以在括號內定義參數,這個叫形參(在函數調用時,傳遞的參數叫實參),比如:
參數定義

執行結果如下:
參數執行1

在定義函數時,可以指定默認參數,意思是,調用時如果不傳參數,那就使用默認值,比如這樣定義一個函數:
默認參數定義

執行效果是這樣的:
默認參數執行

以上函數調用時,已經使用了關鍵字參數,也就是調用時指定函數形參的名字,以”paramer1=xxx”的形式進行傳遞,這種方式經常使用,因為可以明確給哪個參數傳遞了哪個值,而且無順序要求。

函數還有一種參數,叫不定長參數,適用於參數不明確的情景,比如這樣定義與調用:
不定長參數定義

執行效果如下:
不定長參數執行

以上介紹了函數如何定義,以及它的參數特徵。

函數除了參數這個特徵,還有一個特徵是返回值,返回值使用關鍵字return來返回。

一個函數如果沒有return語句,那就相當在最後加了這一句:

return

以下是一個使用返回值的示例:
返回值示例

執行效果是這樣的:
返回值效果

(2)lambda函數

以上函數的定義,都使用def,正而八經地定義了一個有名字的函數,而python還提供了一個實用的特徵,叫lambda函數。lambda函數也叫匿名函數,一般是較短小的函數。

使用lambda關鍵字時,不指定函數名,只指定函數體,比如可以這樣使用:
lambda函數1

再比如這個示例:
lambda函數2

(3)內置函數

以上介紹的是自定義函數,除了自定義函數,python還提供了一系列的內置函數,方便編碼時直接調用。

比如,有這樣的內置函數(此圖來源於 //www.runoob.com/python/python-built-in-functions.html ):
內置函數

對於每個內置函數的作用,以下是一種查看的辦法–使用內置函數help()來查看,比如輸入:

help(len)

可以看到這樣的提示輸出:
help提示1

也就是查看了內置函數len()的作用。


好了,總結一下,本文介紹了流程的函數封裝,包括函數的參數與返回值的特徵,特別介紹了lambda函數,文章最後簡單介紹了python提供的內置函數。see you