[Python教學] Function函示

閱讀時間約 14 分鐘

Function函示

Function觀念-工廠

Function觀念-工廠

想像一個特別的工廠,叫做「點心工廠」。
這個工廠可以製作各種美味的點心,比如餅乾、蛋糕、糖果等等。
每種點心都有不同的味道和形狀。

在這個比喻中,我們可以把「點心工廠」想像成是一個函式,而工廠製作的各種點心就是函式可以執行的事情。
每次我們想要吃某種點心,只需要告訴「點心工廠」我們想要什麼,它就會為我們製作。

function 函式

function 函式



創建 function

函式(Function)是一個程式碼塊,它可以接收一些輸入(稱為參數),進行某些操作,並返回結果。
函式可以在程式中重複使用,提高了代碼的可讀性、可維護性和重用性。

Python中使用 def 關鍵字來定義函式。
以下是一個簡單的函式範例:

def greet(name):
"""這個函式用於問候"""
print(f"Hello, {name}!")

greet("Alice")
greet("Bob")

在這個範例中,我們定義了一個名為 greet 的函式,它接收一個參數 name,然後打印出一個問候語。我們可以通過調用這個函式並傳遞參數來使用它。

函式的基本結構如下:

def function_name(parameters):
"""Docstring - 函式的說明文檔"""
# 函式的主體部分,執行一些操作
return result # 返回結果(可選)
  • def:關鍵字用於定義函式。
  • function_name:函式的名稱,遵循變數命名規則。
  • parameters:參數列表,表示函式接收的輸入。參數可以有多個,用逗號分隔。
  • Docstring:函式的說明文檔,通常用三重引號包裹。描述函式的功能、參數和返回值等。
  • 主體部分:執行實際操作的代碼。
  • return:返回調用者的結果。如果省略,函式將不返回任何值(隱式返回 None)。

您可以通過調用函式並傳遞所需的參數,來使用函式的功能。函式可以幫助您將代碼模塊化,使代碼更容易管理和維護。

多參數

多參數是指一個函式可以接收多個參數,這些參數是在函式呼叫時一併提供給它的。這使得函式能夠處理更多的資訊,從而執行更複雜的任務。多參數讓我們可以將多種資訊傳遞給函式,讓它在執行時能更全面地了解工作內容。

def add_numbers(a, b):
result = a + b
return result

sum_result = add_numbers(5, 3) # 傳遞兩個參數給函式
print(sum_result) # 輸出:8

在這個例子中,我們定義了一個函式 add_numbers,它接收兩個參數 a 和 b。當我們呼叫這個函式並傳遞兩個數字參數給它時,它會將這兩個數字相加並返回結果。

指定參數

指定參數是指在函式呼叫時,我們可以明確地指定哪些參數要傳遞給函式,並略過其他參數。這在處理函式有許多參數時特別有用,因為我們不必提供所有參數,只需提供需要的參數。

def greet(name, age):
print(f"Hello, my name is {name} and I am {age} years old")

greet(name="Alice", age=25) # 指定參數的順序並不重要

在這個例子中,我們定義了一個函式 greet,它接收兩個參數 name 和 age。在呼叫函式時,我們使用 name="Alice" 和 age=25 來指定要傳遞的參數,而不需要依賴參數的順序。

回傳值與多回傳值

在程式設計中,函式不僅可以執行某些操作,還可以產生結果並將其回傳給呼叫者。這些回傳的值可以供後續的程式碼使用。回傳值是函式和其他程式元件之間進行資料交換的一種方法,讓我們可以更有效地編寫程式。

單一回傳值的函式:

def add(a, b):
result = a + b
return result

sum = add(3, 5)
print(sum) # 輸出:8

在這個範例中,add 函式接收兩個參數 a 和 b,計算它們的和,然後將結果回傳給呼叫者。

多回傳值的函式:

def calculate(a, b):
total = a + b
difference = a - b
return total, difference

sum, diff = calculate(10, 5)
print(sum) # 輸出:15
print(diff) # 輸出:5

在這個範例中,calculate 函式計算兩個數字的總和和差值,並同時回傳這兩個值。在呼叫函式時,我們可以使用多個變數來接收這些回傳的值。

需要注意的是,函式可以有一個回傳值(使用 return)或多個回傳值(使用逗號分隔)。

在使用函式回傳值時,我們可以將這些值儲存在變數中,以供後續的程式碼使用。這有助於將程式分解為更小的、可重複使用的部分,並提高程式的模組化程度。

參數預設值

在 Python 函式中,我們可以為函式的參數指定預設值。這意味著如果呼叫函式時沒有提供特定參數的值,該參數將使用預設值。這可以使函式更具彈性,並允許我們在呼叫函式時省略某些參數。

以下是使用參數預設值的範例:

def greet(name, message="Hello"):
print(f"{message}, {name}!")

greet("Alice") # 輸出:Hello, Alice!
greet("Bob", "Hi there") # 輸出:Hi there, Bob!

在這個範例中,greet 函式接收兩個參數 name 和 message。message 參數有一個預設值 "Hello"。當我們呼叫 greet 函式時,如果只提供一個參數,則 message 將使用預設值。如果提供了兩個參數,則 message 將使用提供的值。

使用參數預設值可以使函式更靈活,並減少重複的程式碼。當函式有多個參數,但只有部分需要被提供值時,這種方式特別有用。

需要注意的是,帶有預設值的參數應該放在參數列表的末尾,以確保在呼叫函式時能正確對應參數。
例如,def greet(message="Hello", name) 是無效的,
而 def greet(name, message="Hello") 是有效的。

可變參數 *args 和 **kwargs

在 Python 中,*args 和 **kwargs 是用來處理可變數量的參數的特殊語法。它們允許你在函式定義中處理不確定數量的參數,使得函式更具有彈性。

  1. *args:這個語法允許你將不確定數量的非關鍵字參數傳遞給函式。*args 在函式內部被視為一個包含所有非關鍵字參數的元組。
  2. **kwargs:這個語法允許你將不確定數量的關鍵字參數傳遞給函式。**kwargs 在函式內部被視為一個包含所有關鍵字參數的字典。

以下是使用 *args 和 **kwargs 的範例:

def print_args(*args):
for arg in args:
print(arg)

def print_kwargs(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")

print_args(1, 2, 3) # 輸出:1 2 3
print_kwargs(a=10, b=20, c=30) # 輸出:a: 10 b: 20 c: 30

這種方式對於定義不確定數量的參數很有用,特別是在寫通用的函式時,或者當你不確定有多少參數需要傳遞給函式時。

需要注意的是,*args 和 **kwargs 是約定俗成的命名方式,你可以使用其他名稱,但一般來說,使用這兩個名稱可以讓你的程式碼更易讀。

全域變數 vs 區域變數

區域變數vs全域變數

區域變數vs全域變數

在程式設計中,全域變數(Global Variables)和區域變數(Local Variables)是兩種不同範圍的變數,它們在不同的區域內有效。

  • 全域變數(Global Variables):
    全域變數是在整個程式中都能夠被存取和使用的變數,它們的作用範圍延伸到程式的任何部分。
    全域變數通常在程式的最外層定義,或者在函式外部定義。
    如果在函式內部想要使用全域變數,需要使用 global 關鍵字進行聲明,這樣才能修改全域變數的值。
  • 區域變數(Local Variables):
    區域變數是在特定區域(例如函式內部)中有效的變數,只能在定義它們的區域內使用。
    區域變數通常在函式內部定義,它們的作用範圍僅限於該函式的內部。
    區域變數在函式呼叫結束後就會被清除,無法在函式外部使用。
    以下是全域變數和區域變數的示例:
global_var = 10  # 全域變數

def example_function():
local_var = 5 # 區域變數
print(local_var) # 輸出:5
print(global_var) # 輸出:10

example_function()
print(global_var) # 輸出:10
# print(local_var) # 這樣的寫法會產生錯誤,因為 local_var 是區域變數,無法在函式外部存取

在Python中,global 關鍵字用於在函式內聲明一個變數為全域變數,這樣在函式內部就可以修改該全域變數的值。以下是使用 global 關鍵字的範例:

global_var = 10  # 全域變數

def modify_global():
global global_var # 使用 global 關鍵字聲明變數為全域變數
global_var = 20 # 修改全域變數的值

print("Before:", global_var) # 輸出:Before: 10
modify_global()
print("After:", global_var) # 輸出:After: 20

在上面的範例中,我們使用 global 關鍵字將 global_var 變數聲明為全域變數,然後在 modify_global 函式內部修改了該變數的值。這樣,在函式外部也能夠看到變數值的變化。

需要注意的是,盡管可以使用 global 關鍵字修改全域變數的值,但過度使用全域變數可能會使程式碼變得難以理解和維護。在設計程式時,應盡量避免過度使用全域變數,儘可能將變數的作用範圍限制在函式內部。

總結來說,全域變數在整個程式中都有效,而區域變數僅在特定的區域內有效。因此,在使用變數時需要根據需要來選擇是使用全域變數還是區域變數。

匿名函示

匿名函式,也稱為lambda函式,是一種在程式中定義的簡單的、無名稱的函式。它在某些情況下可以代替一般的函式定義,特別適用於簡單的運算或函式操作。以下是一個常見的使用範例,展示了如何使用匿名函式來對一個清單中的數字進行排序:

# 原始清單
numbers = [5, 2, 8, 1, 3]

# 使用匿名函式對清單中的數字進行排序
sorted_numbers = sorted(numbers, key=lambda x: x)
print(sorted_numbers)

在這個例子中,我們使用了內建的 sorted 函式,並通過 key 參數指定了一個匿名函式(lambda函式)。這個匿名函式會將每個數字作為參數,並直接返回該數字,這樣就實現了對數字的排序。

使用匿名函式的情況是當我們只需要一個簡單的函式來執行某些操作,而不想為它們額外命名或定義整個函式。
以下是一個簡單的匿名函式範例,該函式將兩個數字相加:

add = lambda x, y: x + y
result = add(5, 3)
print(result) # 輸出:8

在這個範例中,我們使用 lambda 關鍵字來定義一個匿名函式,然後在冒號後面編寫函式的程式碼。這個匿名函式接收兩個參數 x 和 y,並返回它們的和。
匿名函式通常用於傳遞給其他函式,如 map()、filter() 或 sorted() 等,這些函式可以接收函式作為參數。匿名函式也可以在需要一個簡單的小功能時使用,而不必在程式中額外定義一個完整的函式。

儘管匿名函式非常方便,但值得注意的是,它們的使用應該保持簡單和清晰。它們不適用於所有場景,因為它們的功能有限,無法處理較複雜的邏輯。在需要更多邏輯的情況下,還是建議使用一般的函式定義。



系列文章


[Python教學]開發工具介紹

[Python經驗分享]為什麼要學Python? 我回不去了

Google Colab 介紹

[Python教學] 資料型態

[Python教學] IF判斷式

[Python教學] List 清單 和 Tuple元組

[Python教學] for 和 while 迴圈

[Python教學] Dictionary 字典 和 Set 集合

[Python教學] Function函示


最後最後有一件小小的請求,請大家幫我填寫一下問卷,
讓我們知道你想上怎麼樣課程,感激不盡。
問卷這邊

Facebook 粉絲頁 - TechMasters 工程師養成記

程式教育 - 工程師養成記

同步分享到部落格

12會員
16內容數
最近當一個講師,把自己會的技能分享出去, 從平常工作就在使用的Python開始教學 我會陸續把資料分享上來,希望可以透過教學相長的方式,互相學習進步。 教學單元有Colab介紹與使用、ChatGPT助教、變數與資料型態、IF判斷式、List清單、For迴圈、字典與集合、函式與模組、Class類別與物件、標準函示庫與套件
留言0
查看全部
發表第一個留言支持創作者!
何誠殷的沙龍 的其他內容
Dictionary 字典 和 Set 集合 字典(Dictionary)是 Python 中一個常用的資料結構,用於儲存一組鍵值對(Key-Value pairs)。集合(Set)是 Python 中的一種無序、可變的資料結構,用於存儲多個元素,且集合中的元素是唯一的(不重複)
for 和 while 迴圈,回圈觀念就是重複,想像自己是一位跑者,需要繞操場十圈才能抵達終點,這十圈在同一個操場上奔跑,這個概念轉換回來解釋程式的回圈就是一直做重複的事情。 for 迴圈是 Python 中的一個迴圈控制結構,用於對集合(例如清單、字串、元組等)中的每個元素進行迭代操作
List 清單 和 Tuple元組 清單在Python裡面非常的常用,大家一定要熟練這些基礎的元素。 在Python中,列表(List)是一種常用的資料類型,用於儲存一組有序的元素。列表是可變的(Mutable),這意味著你可以在列表中新增、刪除和修改元素。列表使用方括號 []
IF判斷式 if判斷式是程式中的一種條件控制結構,用於根據條件的真假來執行不同的程式塊。 在Python中,if語句的基本格式如下: if 條件: # 滿足條件時要執行的程式塊 else: # 不滿足條件時要執行的程式塊
資料型態-變數概念 上面這張圖片傳傳達了三個概念, 常值:可以是數值、浮點數、字串、布林等資料, 變數名稱:這邊也很好理解,就是好記得名稱,這邊使用中文是方便初學者入門, 盒子:代表在Python底層運作的狀況,Python創建變數時,會先在記憶體創建型態物件,這邊是數字型態,所以創建數字物件。
Google Colab是一個基於雲端的Python開發環境,提供免費的CPU和GPU資源,讓用戶可以在網頁瀏覽器中運行和編寫Python程式。它具有強大的協作功能,可以與他人共享和編輯程式碼。Google Colab支援Jupyter筆記本,並提供預裝的Python套件,方便進行數據分析、機器學習
Dictionary 字典 和 Set 集合 字典(Dictionary)是 Python 中一個常用的資料結構,用於儲存一組鍵值對(Key-Value pairs)。集合(Set)是 Python 中的一種無序、可變的資料結構,用於存儲多個元素,且集合中的元素是唯一的(不重複)
for 和 while 迴圈,回圈觀念就是重複,想像自己是一位跑者,需要繞操場十圈才能抵達終點,這十圈在同一個操場上奔跑,這個概念轉換回來解釋程式的回圈就是一直做重複的事情。 for 迴圈是 Python 中的一個迴圈控制結構,用於對集合(例如清單、字串、元組等)中的每個元素進行迭代操作
List 清單 和 Tuple元組 清單在Python裡面非常的常用,大家一定要熟練這些基礎的元素。 在Python中,列表(List)是一種常用的資料類型,用於儲存一組有序的元素。列表是可變的(Mutable),這意味著你可以在列表中新增、刪除和修改元素。列表使用方括號 []
IF判斷式 if判斷式是程式中的一種條件控制結構,用於根據條件的真假來執行不同的程式塊。 在Python中,if語句的基本格式如下: if 條件: # 滿足條件時要執行的程式塊 else: # 不滿足條件時要執行的程式塊
資料型態-變數概念 上面這張圖片傳傳達了三個概念, 常值:可以是數值、浮點數、字串、布林等資料, 變數名稱:這邊也很好理解,就是好記得名稱,這邊使用中文是方便初學者入門, 盒子:代表在Python底層運作的狀況,Python創建變數時,會先在記憶體創建型態物件,這邊是數字型態,所以創建數字物件。
Google Colab是一個基於雲端的Python開發環境,提供免費的CPU和GPU資源,讓用戶可以在網頁瀏覽器中運行和編寫Python程式。它具有強大的協作功能,可以與他人共享和編輯程式碼。Google Colab支援Jupyter筆記本,並提供預裝的Python套件,方便進行數據分析、機器學習
你可能也想看
Google News 追蹤
Thumbnail
在一個典型的程式專案中,UI、Controller 和 Main 的分工通常遵循 MVC 模型(Model-View-Controller) 的架構,這是一種常見的設計模式,能夠將應用程式的邏輯和界面進行分離。 大部分典型的程式專案設計: UI (View):專注於用戶界面,展示數據,並將用
Thumbnail
在Python中安裝套件通常是通過pip這個工具來完成的。 pip是Python的包管理器,用於安裝和管理Python套件 在Python中安裝套件通常是通過pip這個工具來完成的。 pip是Python的包管理器,用於安裝和管理Python套件。以下是基本的安裝步驟: 確認p
Thumbnail
日期時間 時間日期在計算機科學和日常生活中都非常重要。時間:時間是一個連續的概念,用來衡量事件發生的順序和持續的時間。時間通常以不同的單位來表示,包括秒、分鐘、小時、天、月和年等。日期:日期是時間的一個特定點,通常包括年、月和日。
Thumbnail
實作密碼產生器 請使用者輸入要產生幾位數的密碼長度 依據使用者輸入的密碼長度,輸出密碼 import random import string 數字 = string.digits 英文 = string.ascii_letters 字母表 = 數字 + 英文 # 0123456789abc
Thumbnail
檔案存取 路徑與檔案處理是很常用的功能,他們可以獨立運作,但是常常搭配一起使用,如果你處理的檔案是在當下的目錄,可以不需要使用路徑的功能單獨讀寫檔案,如果是想要做一些資料夾的管理,就需要理解路徑和檔案之間的關係。
Thumbnail
⏳ 優質好文,歡迎支持與學習,讓阿Han給你最歡樂的學習課程、最貼近業界的實戰技巧…,just for fun fun fun…😄 相信對於具有開發基礎的學員們來說,基本的開發工程相信已經得心應手了, 那麼您們可能會苦於這些問題: ❓ 哇! pip install別人的程式好方便
Thumbnail
根據RFM的資料來分成8種類型的客戶,1.重要價值客戶2.重要保持客戶3.重要發展客戶4.一般發展客戶5.重要挽留客戶6.一般價值客戶7.一般保持客戶8.一般挽留客戶
Thumbnail
RFM模型是最基本的分析,可以讓你知道哪些是常客、哪些人是偶爾來一次,或是根本不常來,藉此針對不同的客群去做不同的策略,達到提升業績的方法。接下來就讓我教你如何運用PYTHON快速做出RFM分析
Thumbnail
介紹條件控制流程,包含組成它的比較運算子、條件運算式、條件語句。 繼講解完邏輯運算之後,我們終於要開始認識控制流程的其中之一:條件(Condition)。 如同在程式的邏輯思維中介紹到的,我們需要決定問題為 True 需要執行什麼,反之又要執行什麼。這些路徑的選擇便是由條件控制流程所實現。
Thumbnail
介紹邏輯運算的觀念,包含布林值、運算子與運算式的介紹。並說明如何使用 Python 撰寫這些觀念。
Thumbnail
在一個典型的程式專案中,UI、Controller 和 Main 的分工通常遵循 MVC 模型(Model-View-Controller) 的架構,這是一種常見的設計模式,能夠將應用程式的邏輯和界面進行分離。 大部分典型的程式專案設計: UI (View):專注於用戶界面,展示數據,並將用
Thumbnail
在Python中安裝套件通常是通過pip這個工具來完成的。 pip是Python的包管理器,用於安裝和管理Python套件 在Python中安裝套件通常是通過pip這個工具來完成的。 pip是Python的包管理器,用於安裝和管理Python套件。以下是基本的安裝步驟: 確認p
Thumbnail
日期時間 時間日期在計算機科學和日常生活中都非常重要。時間:時間是一個連續的概念,用來衡量事件發生的順序和持續的時間。時間通常以不同的單位來表示,包括秒、分鐘、小時、天、月和年等。日期:日期是時間的一個特定點,通常包括年、月和日。
Thumbnail
實作密碼產生器 請使用者輸入要產生幾位數的密碼長度 依據使用者輸入的密碼長度,輸出密碼 import random import string 數字 = string.digits 英文 = string.ascii_letters 字母表 = 數字 + 英文 # 0123456789abc
Thumbnail
檔案存取 路徑與檔案處理是很常用的功能,他們可以獨立運作,但是常常搭配一起使用,如果你處理的檔案是在當下的目錄,可以不需要使用路徑的功能單獨讀寫檔案,如果是想要做一些資料夾的管理,就需要理解路徑和檔案之間的關係。
Thumbnail
⏳ 優質好文,歡迎支持與學習,讓阿Han給你最歡樂的學習課程、最貼近業界的實戰技巧…,just for fun fun fun…😄 相信對於具有開發基礎的學員們來說,基本的開發工程相信已經得心應手了, 那麼您們可能會苦於這些問題: ❓ 哇! pip install別人的程式好方便
Thumbnail
根據RFM的資料來分成8種類型的客戶,1.重要價值客戶2.重要保持客戶3.重要發展客戶4.一般發展客戶5.重要挽留客戶6.一般價值客戶7.一般保持客戶8.一般挽留客戶
Thumbnail
RFM模型是最基本的分析,可以讓你知道哪些是常客、哪些人是偶爾來一次,或是根本不常來,藉此針對不同的客群去做不同的策略,達到提升業績的方法。接下來就讓我教你如何運用PYTHON快速做出RFM分析
Thumbnail
介紹條件控制流程,包含組成它的比較運算子、條件運算式、條件語句。 繼講解完邏輯運算之後,我們終於要開始認識控制流程的其中之一:條件(Condition)。 如同在程式的邏輯思維中介紹到的,我們需要決定問題為 True 需要執行什麼,反之又要執行什麼。這些路徑的選擇便是由條件控制流程所實現。
Thumbnail
介紹邏輯運算的觀念,包含布林值、運算子與運算式的介紹。並說明如何使用 Python 撰寫這些觀念。