Python入門-Day7:函數

閱讀時間約 12 分鐘

定義函數

在Python中,函數可以通過def關鍵字來定義。定義函數的一般格式如下:

def 函數名(參數列表):
函數體

其中,函數名是函數的名稱,參數列表是用括號括起來的參數,多個參數用逗號分隔。函數體是函數執行的代碼塊,可以包含任意數量的語句。

例如,下面的代碼定義了一個名為hello的函數,該函數不接受任何參數,並在調用時打印出一條歡迎消息:

def hello():
print("歡迎使用本程序!")

調用函數

定義完函數後,可以通過函數名來調用函數。調用函數的一般格式如下:

函數名(參數列表)

其中,函數名是要調用的函數名稱,參數列表是用括號括起來的參數,多個參數用逗號分隔。如果函數不接受任何參數,則可以省略參數列表。

例如,下面的代碼調用了上面定義的hello函數:

hello()

該代碼將打印出一條歡迎消息。

函數的參數傳遞

在 Python 中,函數的參數可以透過兩種方式進行傳遞:位置參數和關鍵字參數。

入門範例

位置參數是指按照參數的位置順序傳遞的參數。例如,我們可以定義一個名為 add 的函數,該函數接受兩個位置參數 ab,並返回它們的和:

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

我們可以調用該函數並傳遞兩個參數,如下所示:

result = add(2, 3)
print(result) # 輸出 5

在該示例中,我們將參數 2 和 3 按照位置順序傳遞給 add 函數,函數將它們相加並返回它們的和,該和被存儲在變量 result 中,並被打印輸出。

參數的類型

  • 必填参数
  • 關鍵字参数
  • 默認参数
  • 不定長度参数

必填参数

必填参数是指在調用函數時必須傳遞的參數,如果沒有傳遞這些參數,則會報錯。例如,下面的代碼定義了一個名為 add 的函數,該函數接受兩個必填參數 ab,並返回它們的和:

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

我們可以調用該函數並傳遞兩個參數,如下所示:

result = add(2, 3)
print(result) # 輸出 5

在該示例中,我們將參數 2 和 3 傳遞給 add 函數,函數將它們相加並返回它們的和,該和被存儲在變量 result 中,並被打印輸出。

關鍵字參數

關鍵字參數是指在調用函數時按照參數名稱傳遞的參數。使用關鍵字參數可以讓我們在調用函數時不必考慮參數的順序。例如,下面的代碼定義了一個名為 print_person_info 的函數,該函數接受三個關鍵字參數 nameagegender,並打印出這些參數代表的人物的信息:

def print_person_info(name, age, gender):
print("姓名:%s" % name)
print("年齡:%d" % age)
print("性別:%s" % gender)

我們可以調用該函數並傳遞三個關鍵字參數,如下所示:

print_person_info(name="張三", age=20, gender="男")

在該示例中,我們將參數 nameagegender 按照參數名稱傳遞給 print_person_info 函數,函數將根據這些參數打印出人物的信息。

默認参数

默認參數是指在定義函數時指定的一個默認值,如果在調用函數時沒有傳遞這些參數,則函數將使用這個默認值。例如,下面的代碼定義了一個名為 add 的函數,該函數接受兩個默認參數 ab,並返回它們的和:

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

我們可以調用該函數並不傳遞任何參數,如下所示:

result = add()
print(result) # 輸出 0

在該示例中,我們沒有傳遞任何參數給 add 函數,函數使用了默認值 0 來計算並返回和。

不定長度參數

不定長度參數是指在調用函數時可以傳遞任意數量的參數。在 Python 中,有兩種不定長度參數:不定長度位置參數和不定長度關鍵字參數。不定長度位置參數是指在調用函數時可以傳遞任意數量的位置參數,這些參數將被收集到一個元組中。不定長度關鍵字參數是指在調用函數時可以傳遞任意數量的關鍵字參數,這些參數將被收集到一個字典中。例如,下面的代碼定義了一個名為 add 的函數,該函數接受任意數量的位置參數和任意數量的關鍵字參數,並返回它們的和:

def add(*args, **kwargs):
result = 0
for arg in args:
result += arg
for kwarg in kwargs.values():
result += kwarg
return result

我們可以調用該函數並傳遞任意數量的位置參數和關鍵字參數,如下所示:

result = add(1, 2, 3, a=4, b=5)
print(result) # 輸出 15

在該示例中,我們傳遞了三個位置參數 1、2 和 3,以及兩個關鍵字參數 ab,函數將這些參數相加並返回它們的和。

return語句

return語句用於結束函數的執行並返回一個值。在函數體中,可以使用return語句將值返回給調用方。如果函數沒有return語句,則函數執行完畢後不會返回任何值。

例如,下面的代碼定義了一個名為add的函數,該函數接受兩個參數ab,並返回它們的和:

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

我們可以調用該函數並傳遞兩個參數,如下所示:

result = add(2, 3)
print(result) # 輸出 5

在該示例中,我們將參數2和3傳遞給add函數,函數將它們相加並返回它們的和,該和被存儲在變量result中,並被打印輸出。

如果函數沒有return語句,則函數執行完畢後不會返回任何值。例如,下面的代碼定義了一個名為say_hello的函數,該函數不接受任何參數,並在調用時打印出一條歡迎消息:

def say_hello():
print("歡迎使用本程序!")

我們可以調用該函數,如下所示:

say_hello()

該代碼將打印出一條歡迎消息,但不會返回任何值。

綜合範例

def hello(a):
print(f"{a}:歡迎使用本程序!")

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

def add2(a=0, b=0):
c = a + b
return c

def add3(*args, **kwargs):
result = 0
for arg in args:
result += arg
for kwarg in kwargs.values():
result += kwarg
return result

mathNumber = add(b=2, a=1)
print(mathNumber)
print(add2(1, 2))
result = add3(a=1, b=2, c=3, d=4, e=5)
print(result)
result = add3(1, 2, 3, 4, 5)
print(result)

全域變數和區域變數

在 Python 中,變數可以分為全域變數和區域變數兩種。

全域變數是指在函數外部定義的變數,可以在整個程序中使用。區域變數是指在函數內部定義的變數,只能在該函數內部使用。

當在函數內部定義一個變數時,該變數通常是一個區域變數。如果在函數內部需要使用一個全域變數,可以使用 global 關鍵字來聲明它。

下面的示例演示了如何在 Python 中使用全域變數和區域變數:

x = 10 # 定義一個全域變數 x

def func():
y = 5 # 定義一個區域變數 y
global x # 使用 global 關鍵字聲明 x 為全域變數
x = x + y # 在函數內部使用全域變數 x 和區域變數 y
print("x =", x) # 輸出全域變數 x 的值

func() # 調用函數
print("x =", x) # 輸出全域變數 x 的值

在該示例中,我們定義了一個全域變數 x 和一個函數 func。函數內部定義了一個區域變數 y,並使用 global 關鍵字聲明變數 x 為全域變數。在函數內部,我們使用全域變數 x 和區域變數 y 進行計算,並將結果存儲在全域變數 x 中。最後,我們分別輸出了全域變數 x 的值。

調用不同檔案間的函數(副程式的概念)

在 Python 中,我們可以在一個檔案中定義函數,然後在另一個檔案中調用它。

為了在不同的檔案之間共用函數,我們需要將函數定義放在一個單獨的檔案中,然後在其他檔案中通過 import 關鍵字導入該檔案。

下面是一個簡單的範例,展示了如何在兩個不同的檔案中共用一個函數:

my_module.py 檔案中定義一個函數:

def greet(name):
print("Hello, " + name + "!")

main.py 檔案中使用該函數:

import my_module

my_module.greet("John")

在這個範例中,my_module.py 檔案定義了一個名為 greet 的函數,該函數接受一個參數 name,並打印出一條問候語。在 main.py 檔案中,我們使用 import 關鍵字導入 my_module 檔案,然後使用 my_module.greet 調用 greet 函數,並傳遞一個參數 "John"

在這個例子中,我們將 greet 函數和 main 函數定義在不同的檔案中,並通過 import 關鍵字將它們連接在一起。這樣,我們就可以在 main.py 檔案中使用 greet 函數了。

總和範例

toy.py

def hello(a):
'''
This is a function to say hello to a person.
'''
print(f"{a}:歡迎使用本程序!")

def add(a, b):
'''
This is a function to add two numbers.
'''
c = a + b
return c

def add2(a=0, b=0):
'''
This is a function to add two numbers.
'''
c = a + b
return c

def add3(*args, **kwargs):
'''
This is a function to add numbers.
'''
result = 0
for arg in args:
result += arg
for kwarg in kwargs.values():
result += kwarg
return result

main.py

import toy

mathNumber = toy.add(b=2, a=1)
print(mathNumber)
print(toy.add2(1, 2))
result = toy.add3(a=1, b=2, c=3, d=4, e=5)
print(result)
result = toy.add3(1, 2, 3, 4, 5)
print(result)
print(toy.hello("小明"))
    avatar-img
    15會員
    111內容數
    日後將分享關於我的經驗(日常、工作、技術),並期待未來能創造屬於我的宇宙。
    留言0
    查看全部
    avatar-img
    發表第一個留言支持創作者!
    Michael楊 的其他內容
    本文介紹了Python中的流程控制,包括if, elif, else語句,三元運算子,for和while迴圈,以及控制迴圈語句如break、continue和pass。透過範例程式碼,說明了如何使用這些語句和結構進行條件判斷,迴圈遍歷和控制程式流程。
    本文介紹了各種運算符的用法和優先級,包括算術運算符、比較運算符、賦值運算符、邏輯運算符、位元運算符、成員運算符和身份運算符。每種運算符都有詳細的描述和示例程式碼,幫助理解其功能和用法。
    本文詳細介紹了Python中的各種資料型別,包括整數、字串、清單、元組、集合和字典,並提供了相關的操作範例。此外,還解釋了如何在Python中定義和操作變數,包括如何同時對多個變數進行賦值。
    Python語法包括條件語句、迴圈、函數和變數的使用。條件語句如if、elif和else用於進行條件判斷,for和while是兩種主要的迴圈,def用於定義函數。變數可以被賦予數字或字符串,並可使用類型提示來指定變數的類型。註解可以是單行或多行,並可用於解釋函數或類的用途和作用。
    Python是一種易學且功能強大的程式語言,具有直譯、動態語法等特性,並擁有豐富的標準庫。它在各領域如Web開發、數據科學和人工智慧等得到廣泛應用,並被許多大公司如Google和Facebook等使用。Python還有強大的框架、豐富的交互機能、和龐大的社區。
    本文介紹了Python中的流程控制,包括if, elif, else語句,三元運算子,for和while迴圈,以及控制迴圈語句如break、continue和pass。透過範例程式碼,說明了如何使用這些語句和結構進行條件判斷,迴圈遍歷和控制程式流程。
    本文介紹了各種運算符的用法和優先級,包括算術運算符、比較運算符、賦值運算符、邏輯運算符、位元運算符、成員運算符和身份運算符。每種運算符都有詳細的描述和示例程式碼,幫助理解其功能和用法。
    本文詳細介紹了Python中的各種資料型別,包括整數、字串、清單、元組、集合和字典,並提供了相關的操作範例。此外,還解釋了如何在Python中定義和操作變數,包括如何同時對多個變數進行賦值。
    Python語法包括條件語句、迴圈、函數和變數的使用。條件語句如if、elif和else用於進行條件判斷,for和while是兩種主要的迴圈,def用於定義函數。變數可以被賦予數字或字符串,並可使用類型提示來指定變數的類型。註解可以是單行或多行,並可用於解釋函數或類的用途和作用。
    Python是一種易學且功能強大的程式語言,具有直譯、動態語法等特性,並擁有豐富的標準庫。它在各領域如Web開發、數據科學和人工智慧等得到廣泛應用,並被許多大公司如Google和Facebook等使用。Python還有強大的框架、豐富的交互機能、和龐大的社區。
    你可能也想看
    Google News 追蹤
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
    Thumbnail
    Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
    Thumbnail
    初入IT產業的人士在學習Python語言後,IT證照如ITS Python認證是否值得考取?本文以ITS證照特點、實施建議和IT認證考試資訊為主,詳述證照的好處和準備時間。
    Thumbnail
    如何用Python匯入大批Excel檔案? os.listdir建立資料夾內[檔案名稱.副檔名]之列表 利用迴圈將所有檔案匯入Python 用pandas.concat合併所有DataFrame
    Thumbnail
    本文將介紹 Python 中的字符串操作方法與輸入輸出,從基本的索引、切片到進階的字符串方法,還有如何進行輸入輸出操作,這對於文本處理和用戶交互來說非常重要。
    Thumbnail
    網路爬蟲(web crawler),也叫網路蜘蛛(spider) 是一個強大的自動化工具,可以自由瀏覽、擷取訪問網頁的各項資訊,例如:新聞文章、電商商品價格,當專案中需要添加外部數據或進行大量資料收集時,網路爬蟲就是一個非常實用的工具。
    Thumbnail
    Python 是一個易於學習且功能強大的高級程式語言,它廣泛用於軟件開發、數據科學、人工智能和網站開發等領域。本教學將帶您入門 Python,讓您了解基本語法和常用功能。讓我們開始吧!
    Thumbnail
    資料分析工具百百種,有容易操作資料、視覺化的BI工具、常用於各領域的分析模型套裝軟體等等,但對於想做資料分析、資料科學的人,「程式語言」可以說是現今不可或缺的能力,而R與Python則可以稱為資料科學領域最熱門的兩個程式語言,這篇文章主要想分享R與Python的使用情境,以及分享網路上一些資源。
    在這篇教學中,我們將介紹如何使用Python的openpyxl套件將資料寫入Excel文件。openpyxl是一個功能強大的函式庫,可以讓我們輕鬆地處理Excel文件。
    Thumbnail
    剛開始學一個新的語言,第一個面臨的問題就是,需要先學習架設程式語言的環境。為了避免架設環境而降低學習的熱情,我們可以先使用 Repl.it 協助我們先練習Python 的基本語法。
    Thumbnail
    該篇文章首要為 1.下載python與文字編輯器vs code (Visual Studio Code) 2.撰寫第一支python程式
    Thumbnail
    資料科學家、數據分析師是近幾年新興,而且熱門的職業,而DataCamp是一個專精於資料科學的程式教學網站。在實務上會用到的各種知識與程式技能,從流程面的網路爬蟲、數據清洗、資料視覺化,到技術面的Python、R語言、SQL,在DataCamp上幾乎都可以找到相關教學。
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
    Thumbnail
    Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
    Thumbnail
    初入IT產業的人士在學習Python語言後,IT證照如ITS Python認證是否值得考取?本文以ITS證照特點、實施建議和IT認證考試資訊為主,詳述證照的好處和準備時間。
    Thumbnail
    如何用Python匯入大批Excel檔案? os.listdir建立資料夾內[檔案名稱.副檔名]之列表 利用迴圈將所有檔案匯入Python 用pandas.concat合併所有DataFrame
    Thumbnail
    本文將介紹 Python 中的字符串操作方法與輸入輸出,從基本的索引、切片到進階的字符串方法,還有如何進行輸入輸出操作,這對於文本處理和用戶交互來說非常重要。
    Thumbnail
    網路爬蟲(web crawler),也叫網路蜘蛛(spider) 是一個強大的自動化工具,可以自由瀏覽、擷取訪問網頁的各項資訊,例如:新聞文章、電商商品價格,當專案中需要添加外部數據或進行大量資料收集時,網路爬蟲就是一個非常實用的工具。
    Thumbnail
    Python 是一個易於學習且功能強大的高級程式語言,它廣泛用於軟件開發、數據科學、人工智能和網站開發等領域。本教學將帶您入門 Python,讓您了解基本語法和常用功能。讓我們開始吧!
    Thumbnail
    資料分析工具百百種,有容易操作資料、視覺化的BI工具、常用於各領域的分析模型套裝軟體等等,但對於想做資料分析、資料科學的人,「程式語言」可以說是現今不可或缺的能力,而R與Python則可以稱為資料科學領域最熱門的兩個程式語言,這篇文章主要想分享R與Python的使用情境,以及分享網路上一些資源。
    在這篇教學中,我們將介紹如何使用Python的openpyxl套件將資料寫入Excel文件。openpyxl是一個功能強大的函式庫,可以讓我們輕鬆地處理Excel文件。
    Thumbnail
    剛開始學一個新的語言,第一個面臨的問題就是,需要先學習架設程式語言的環境。為了避免架設環境而降低學習的熱情,我們可以先使用 Repl.it 協助我們先練習Python 的基本語法。
    Thumbnail
    該篇文章首要為 1.下載python與文字編輯器vs code (Visual Studio Code) 2.撰寫第一支python程式
    Thumbnail
    資料科學家、數據分析師是近幾年新興,而且熱門的職業,而DataCamp是一個專精於資料科學的程式教學網站。在實務上會用到的各種知識與程式技能,從流程面的網路爬蟲、數據清洗、資料視覺化,到技術面的Python、R語言、SQL,在DataCamp上幾乎都可以找到相關教學。