自定函式

函式是一個程式區塊,必須呼叫才能運行。

可以帶 0 個、1個或多個參數進到函式中,以便在函式中運用。

結束離開函式前,也可以帶或不帶傳回值走。

語法

def 函數名稱( [參數1, 參數2, ..., 參數n] ): #函式名稱取法跟變數名稱同

程式區塊

[return 回傳1, 回傳2, 回傳3, ..., 回傳n] #區塊中可以帶回傳值

範例:設計一個函式,帶入長方形的寬高,計算長方形的面積後並回傳。

並輸入方形的 寬和高後,呼叫此函數,取得方形面積後,列印結果。

範例:設計一個函式,輸入身高和性別,帶入身高和性別,計算標準體重後回傳。

並輸入身高、性別後,呼叫此函式,取得標準體重後列印結果。

世界衛生組織計算標準體重之方法 :

男性: (身高cm-80)×70﹪=標準體重

女性: (身高cm-70)×60﹪=標準體重

變數的有效範圍

變數可能存在函式中或函式外。他們的有效範圍是不同的。

依有效範圍來看,變數分成全域變數和區域變數:

  1. 全域變數:定義在函式外的變數,有效範圍是整個 python 檔。函式之內的程式碼,可以看到全域變數,故可以使用全域變數。

  2. 區域變數:定義在函式內的變數,有效範圍僅在所在的函式內。函式之外的程式碼,看不到函式內的區域變數,故無法使用區域變數。只有函式內的程式碼才能使用區域變數。

若函式內的程式碼需要用 a,但函式內、外各有一個相同名稱的變數 a,則會取用函式內的 a。

函式內程式碼使用變數的原則是,會先在自己的函式內找尋要用的變數,若找不到,才會往函式外找尋。若都找不到,則程式會出現錯誤。

範例:設計一個 函式,函式內、外各有一個 a, 並在函式內、外皆列印一個 a。(看列印的 a 式哪個值)

下列 PythonTutor 的 Python 程式執行的視覺畫面,當呼叫函數 scope() 時,python 內部會闢一個小區塊來放置函數所需要的變數。如下圖,可以看到外部的全域變數 a 和函數內部的區域變數a,是不同個變數。