不再迷茫!手把手的Python入門教學-函數

閱讀時間約 4 分鐘
用最直白的語言解釋最複雜的概念,一系列教學​讓你在短時間內掌握 Python

函數

函數是一段可以重複使用的功能性代碼,通常接受輸入並返回輸出(雖然也有很多例外),Python 內建常見的函數有 print( )input( ) ......,不過參數就像是工具一樣,需要呼叫它才會開始執行,沒有呼叫的話函數就形同虛設


自定義函數

在 Python 中,定義一個函數的基本語法如下:

def 函數名稱(參數):
函數內容……

參數可有可無,例如:

自定義函數

自定義函數

上面的例子就是一個沒有參數的函數,自定義函數 greet() 的功能就是將"你好,歡迎學習Python!"列印出來,而第4行就是透過函數呼叫,來執行這個函數。

這邊要注意,儘管沒有參數,在呼叫函數的時候也還是要加上小括號喔!


函數參數

參數可以理解為用來接收輸入值的變數,呼叫函數時,可以輸入數值代入到函數之中,也可以在定義函數(函數宣告)的時候,設定預設值,這樣如果函數呼叫的時候沒有輸入參數值,就會以預設值代入函數中。

下面程式碼中的 print() 使用了 f-string,這是 Python 3.6 之後的新功能,文章最後會補充說明。

函數參數

函數參數

上面的範例可以看到,第5行在呼叫函數的時候,有輸入參數值"Alice",這樣"Alice"就會被帶入到函數中成為參數。

第7行我們重新定義函數 greet,並將 name 加上一個預設值"學生",如此一來,像第11行的函數呼叫沒有輸入參數值,就會輸出預設值"學生"


補充:不定數量參數

如果需要函數接收不定數量的參數,可以使用 ***

raw-image


返回值

return 會將函數執行完的結果回傳到呼叫函數的位置,返回值可以用變數接收。直接來看到下面範例:

返回值

返回值

我先簡單拆解一下第一個範例:

  1. 程式偵測到函數宣告,先略過(因為還沒偵測到函數呼叫)
  2. add(3, 5) → 將 3 跟 5 代入函數的 a 跟 b。
  3. return a + b → 將 3+5 回傳到函數呼叫的地方,也就是 add(3, 5)
  4. result 接收函數回傳的值也就是 8。

第二個範例也跟上面差不多,但因為有 2 個回傳值,所以需要 2 個變數接收。


區域和全域變數

  • 函數內的變數稱為區域變數;全域變數則在函數之外定義。
  • 區域變數和全域變數是兩個不同的實體,即使它們的名稱相同也不互相衝突。

可以想像成遊戲中的主線劇情跟副本,副本中的角色不會影響主線的劇情走向,就算主線角色有出現在副本,當角色離開的時候也不會改變他的狀態,但如果人物直接消失在主線穿越到副本的話,當他穿越回來的時候可能就會改變,而這個穿越的媒介就是 global。來看一下範例:

區域與全域變數

區域與全域變數

範例中,第1行跟第4行的變數 x 是不同的個體,所以一個等於10一個等於20,而不會互相衝突。當到了第11行,global x 將全域變數 x 整個代入到函數中,所以在函數中修改 x,其實是修改了全域的 x。

遞迴 (recursion)

遞迴函數會在執行過程中不斷自己呼叫自己,通常需要一個明確的終止條件。

raw-image
  1. 程式偵測到函數宣告,先略過(因為還沒偵測到函數呼叫)
  2. print(factorial(5)) → 將 5 代入到函數的 n。
  3. return n*factorial(n-1) → 再次函數呼叫,以取得factorial(4) 的值。
  4. 將 4 代入到函數的 n。
  5. return n*factorial(n-1) → 再次函數呼叫,以取得factorial(3) 的值。
  6. 依此類推......
  7. 將 1 代入到函數的 n。
  8. if n==0 or n==1: 成立,return 1
  9. 1 回傳到 return 2*factorial(1) 的位置,所以回傳 2。
  10. 2 回傳到 return 3*factorial(2) 的位置,所以回傳 6。
  11. 依此類推......
  12. 最後回傳到最一開始的 print(factorial(5)) ​輸出 120。

遞迴的概念用文字比較難描述,可以看看下面的圖片,應該會比較容易理解。

圖解遞迴

圖解遞迴


補充:f-string

f-string 是一種格式化字串的方式,可以在字串中嵌入變數,讓程式碼更簡潔易讀。
需要注意的是,雙引號前面要加上小寫 f,且變數的位置要用大括號 { } 包起來。

raw-image


⬇️程式檔放置區⬇️

這個 Python 教學系列的程式檔都放在以下雲端資料夾,如果需要可以自行下載來試試看,請使用 Jupyter Notebook 開啟程式檔,資料夾中附有 Jupyter開檔教學,跟著我一步一腳印學習程式語言吧!


專為初學者打造的Python簡易教學,從零開始不卡關
留言0
查看全部
發表第一個留言支持創作者!
の倉的程式小天地 的其他內容
迴圈用於重複執行一段程式碼,直到滿足特定條件為止,可以幫助自動執行重複的程式,減少程式碼的冗餘,這邊介紹最常用的 for loop 跟 while loop
If-else 條件判斷是最被廣泛使用的方法,白話來講就是:如果(if)條件成立,就執行縮排底下的程式碼;如果條件不成立,就不會執行,並判斷其它的如果(elif)是否成立,同樣的,條件成立,就執行縮排底下的程式碼;反之,就不會執行,並繼續往下判斷,若以上全部的條件都不成立,就會執行最後一......
本文介紹 Python 的基本概念,並提供安裝指南,幫助初學者快速掌握這門流行的程式語言。內容包括 Python 的設計哲學、安裝步驟以及可用的整合開發環境(IDE)。透過簡單易懂的方式,您將能夠開始撰寫 Python 程式,並享受程式設計的樂趣。
迴圈用於重複執行一段程式碼,直到滿足特定條件為止,可以幫助自動執行重複的程式,減少程式碼的冗餘,這邊介紹最常用的 for loop 跟 while loop
If-else 條件判斷是最被廣泛使用的方法,白話來講就是:如果(if)條件成立,就執行縮排底下的程式碼;如果條件不成立,就不會執行,並判斷其它的如果(elif)是否成立,同樣的,條件成立,就執行縮排底下的程式碼;反之,就不會執行,並繼續往下判斷,若以上全部的條件都不成立,就會執行最後一......
本文介紹 Python 的基本概念,並提供安裝指南,幫助初學者快速掌握這門流行的程式語言。內容包括 Python 的設計哲學、安裝步驟以及可用的整合開發環境(IDE)。透過簡單易懂的方式,您將能夠開始撰寫 Python 程式,並享受程式設計的樂趣。
你可能也想看
Google News 追蹤
Thumbnail
接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
Thumbnail
🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
Thumbnail
在 Python 中,print( ) 函數用於將結果輸出到螢幕上。當你嘗試將不同資料型別(例如字串和數字)混合在一起輸出時,print( )函數無法直接處理這些不同型別的資料,因此你需要先將它們轉換為相同的資料型別。通常,這意味著需要將數字轉換為字串型別,以便與其他字串一同輸出。 雖然我們也可以
Thumbnail
在這一章中,我們探討了 PHP 中的函數,包括函數的基本結構、不同的函數定義方式(如函數聲明、函數表達式、箭頭函數和匿名函數)以及如何呼叫函數。我們還討論了函數的參數處理方式,包括單個參數、多個參數、預設參數值和剩餘參數。此外,我們還介紹了函數的返回值,包括返回單個值、返回物件和返回函數的情況。
ITS python認證內容含蓋六大主題
Thumbnail
Python 提供了一系列內建函式,其中一部分涉及數學和數學操作。 以下是一些常用的內建函式和數學相關的函式: 基本數學運算: abs(x): 返回 x 的絕對值。 result = abs(-5) print(result) # 輸出: 5 max(iterable) 和 min(
Thumbnail
本文介紹了Python中函式引數的*args和**kwargs用法,通過*args處理可變數量的位置引數,通過**kwargs處理可變數量的關鍵字引數。不僅介紹了相應的語法和程式範例,還解釋了它們的順序問題和建議的慣例用法。
Thumbnail
Python 提供了一個功能豐富的標準函式庫,其中 random 專門用於生成隨機數。本文將介紹 random 的基本介紹,以及函式應用。
Thumbnail
宣告變數 變數是程式中用來儲存和表示數據的標識符號​,並將變數存放在某個記憶體位子 可以用ID的方法查找變數存在哪個記憶體,此方法有利於以後查找問題用。 在大多數程式語言中,變數需要事先聲明(宣告)並賦值。 而Python是一種動態類型語言,不需要顯式宣告變數類型,而是在賦值時自動進行推斷。
Thumbnail
lambda 函式,又稱為“匿名函式”,是一種在 Python 中快速定義單行函式的方法,與 def 定義函式不同,lambda 函式不需要命名。本文將介紹 lambda函式的基礎語法,以及實際應用範例演示。
Thumbnail
本文將介紹自定函式及應用,利用程式範例解釋為什麼要用到自定函式 自定函式好處當然就是,讓你的程式碼看起來比較簡潔,在重複使用到的程式碼區塊,可以包裝成函式,讓你重複使用它。
Thumbnail
接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
Thumbnail
🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
Thumbnail
在 Python 中,print( ) 函數用於將結果輸出到螢幕上。當你嘗試將不同資料型別(例如字串和數字)混合在一起輸出時,print( )函數無法直接處理這些不同型別的資料,因此你需要先將它們轉換為相同的資料型別。通常,這意味著需要將數字轉換為字串型別,以便與其他字串一同輸出。 雖然我們也可以
Thumbnail
在這一章中,我們探討了 PHP 中的函數,包括函數的基本結構、不同的函數定義方式(如函數聲明、函數表達式、箭頭函數和匿名函數)以及如何呼叫函數。我們還討論了函數的參數處理方式,包括單個參數、多個參數、預設參數值和剩餘參數。此外,我們還介紹了函數的返回值,包括返回單個值、返回物件和返回函數的情況。
ITS python認證內容含蓋六大主題
Thumbnail
Python 提供了一系列內建函式,其中一部分涉及數學和數學操作。 以下是一些常用的內建函式和數學相關的函式: 基本數學運算: abs(x): 返回 x 的絕對值。 result = abs(-5) print(result) # 輸出: 5 max(iterable) 和 min(
Thumbnail
本文介紹了Python中函式引數的*args和**kwargs用法,通過*args處理可變數量的位置引數,通過**kwargs處理可變數量的關鍵字引數。不僅介紹了相應的語法和程式範例,還解釋了它們的順序問題和建議的慣例用法。
Thumbnail
Python 提供了一個功能豐富的標準函式庫,其中 random 專門用於生成隨機數。本文將介紹 random 的基本介紹,以及函式應用。
Thumbnail
宣告變數 變數是程式中用來儲存和表示數據的標識符號​,並將變數存放在某個記憶體位子 可以用ID的方法查找變數存在哪個記憶體,此方法有利於以後查找問題用。 在大多數程式語言中,變數需要事先聲明(宣告)並賦值。 而Python是一種動態類型語言,不需要顯式宣告變數類型,而是在賦值時自動進行推斷。
Thumbnail
lambda 函式,又稱為“匿名函式”,是一種在 Python 中快速定義單行函式的方法,與 def 定義函式不同,lambda 函式不需要命名。本文將介紹 lambda函式的基礎語法,以及實際應用範例演示。
Thumbnail
本文將介紹自定函式及應用,利用程式範例解釋為什麼要用到自定函式 自定函式好處當然就是,讓你的程式碼看起來比較簡潔,在重複使用到的程式碼區塊,可以包裝成函式,讓你重複使用它。