不再迷茫!手把手的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
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
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
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
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
本文將介紹自定函式及應用,利用程式範例解釋為什麼要用到自定函式 自定函式好處當然就是,讓你的程式碼看起來比較簡潔,在重複使用到的程式碼區塊,可以包裝成函式,讓你重複使用它。