自製函數—def f(x):

到目前為止,我們已經學會了Python的基本型態、資料結構、迴圈以及邏輯判斷。今天,我們要跟大家分享如何自製函數!

為什麼要自製函數呢?在Python裡面,自製函數是相當好用的一個功能,我們可以把我們想要做的事情,寫在一個函數裡,然後當我們有不同的資料時,可以重複呼叫這個函數,這個函數就會自動幫我們針對不同的資料,做相同我們想要做的事情。所以自製函數這個功能,可以說是相當的客製化,非常實用。

(一) 建構函數

在Python中,要建構函數相當簡單,只要先輸入”def 自訂函數名稱(參數1,參數2,…,參數n):”,然後從第二行開始寫我們想要做的事情,就完成了!

在此有兩件事情要提醒大家。第一,套入Python的邏輯,第二行開始請記得縮排,縮排的內容才代表在這個函式裡面唷!第二,函數名稱請勿跟Python現有的一些函式名稱一樣噢! 怎麼判別呢? 當顏色變了,你自然就知道這個名稱不可以用,請更改名稱唷!

現在,讓我們一起來看幾個小例子吧!

我們定義了一個函數,取名叫combine,參數是x跟y。這個函數可以自動結合兩個參數,當我們輸入字串時,就會自動結合兩個字串,當我們輸入數字時,就會自動計算!

(二)函數結合迴圈跟邏輯判斷

接下來,我們一起挑戰看看如何應用先前學過的迴圈跟邏輯判斷,寫出找出一個數列裡面最大值的函數。

有了這個my_max()以後,我們就可以一值使用這個函數來找出一組數列中的最大值唷!而我們也可以建立其他的重要函數,就可以一值重複使用囉!

小作業:挑戰看看寫個my_min()函數,找出一組數列的最小值。

(三)print 與 return 的差別

細心的讀者會發現,我們在(一)中回傳結果用的是”print”,而在(二)中用的是”return”,這兩者有什麼差別呢?

“print”顧名思義,就是把結果印出來,所以印出來的結果是不屬於任何型態的,也就是說,如果你的function最後的回傳是印出結果,那就是最終結果了!我們沒辦法對這個結果做其他的應用,如加減乘除之類的運算。如果我們還想對這個結果做運算怎麼辦呢?那請在function最後改用”return”,也就是回傳某個值的意思!讓我們直接來看以下這兩個例子吧!

在這裡我們可以看到,這個函數可以有效運算出某個數字的平方。然而,卻無法再繼續做其他的運算了。以本例來說,25的型態本來預期是integer,然而因為我們是印出來的,而不是儲存這個值,所以當我們查詢type的時候可以發現,是NoneType,就是一個印出來的結果。

讓我們來看看,當我們改用return時,會發生什麼事情呢?

當我們用return時,會把回傳的結果當成值,也就是結果應該是什麼型態,就會產生該型態,所以可以繼續進行運算。

(四)把小專案包裝成函數

還記得我們一起寫的猜數字遊戲嗎?今天,我們要把它直接寫成函數,使用者可以直接在函數中寫入答案,參與者就可以猜答案了!

到這邊,相信大家已經發現函數的妙用囉!未來我們有很多很多的工作,都會使用到函數唷!有空時,別忘了挑戰看看今天的小作業,明天公布解答唷!

Share

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *