Skip to content

AI STUDIO Taiwan

台 灣 人 工 智 慧 與 資 料 科 學 研 究 室

  • About 關於本站
  • 專欄列表
  • Taiwan NLP.台灣自然語言處理與人工智慧交流社( 1.8萬位成員)
  • 關於 Taiwan NLP 社群

【Python 基礎教學】05 自定義函式

Posted on 2020 年 5 月 10 日2023 年 7 月 18 日 By 楊 明翰 在〈【Python 基礎教學】05 自定義函式〉中尚無留言
Python 入門
Print Friendly, PDF & Email

前面介紹過for迴圈能幫我們重複執行某些事情,但如果我們希望把某些一整套的流程整理包起來,日後有需要就可以呼叫,我們就要利用自定義函式來完成。在Python中,自定義函式的關鍵字為def,也就是define的縮寫。

內容目錄

  • def 一般函式
  • Lambda 函式

def 一般函式

定義一個一般的函式,語法格式為:

Python
def 函式名稱(函式參數):
	函式內部區域
	.
	.
	.
	return 函式返回值
	
#(記得函數內部區域要縮排)

舉例來說,我有這樣一個計算平均的程式:

Python

x =[1,2,3]


avg = sum(x)/3


print(f"average of {x} is {avg}")


x =[1,2,3,4]


avg = sum(x)/4


print(f"average of {x} is {avg}")

執行結果:

Python
average of [1, 2, 3] is 2.0
average of [1, 2, 3, 4] is 2.5

我們希望把計算平均值的部份函式化,避免一直重複,讓需要使用的時候呼叫即可而且更容易維護,會改成

Python
def avg(x):
   return sum(x)/len(x)


x =[1,2,3]
print(f"average of {x} is {avg(x)}")
x =[1,2,3,4]
print(f"average of {x} is {avg(x)}")

其中avg是函式名稱,小括號內的x是函式參數,像這樣就是一個最基本的函式。搭配for迴圈再整理變成:

Python
def avg(x):
   return sum(x)/len(x)

xs =[[1,2,3],[1,2,3,4]]
for x in xs:
   print(f"average of {x} is {avg(x)}")

這裡再舉第二個稍微複雜一點的同時計算平均和變異數:

Python
def avg(X):
   return sum(X)/len(X)

def var(X):
   mean = avg(X)
   var = 0
   for x in X:
       var += (x-mean)**2
   return var/len(X)

X = [1, 2, 3, 4, 5]

print(f"data {X} `s mean is {avg(X)} , variance is {var(X)}")

這裡自定義一個計算變異數的函數var(),由於計算變異數需要先計算平均數,所以可以利用先前寫過的avg()直接呼叫即可,以上就是使用def來建立函數的介紹。

Lambda 函式

lambda 函式又稱匿名函式,省略掉函數名稱,可以把函式以「壓縮」的方式寫成一行就好,這樣能夠讓一些只負責簡單工作的函式不要看起來這麼冗長。它有幾個要求:

  1. 不會有函數名稱
  2. 只會寫成一行
  3. 只能提供一種運算
  4. 不寫return,函式結果會自動返回

lambda的語法格式為:

Python
lambda [函式參數1],[函式參數2]… : [函式內部的計算]

舉前面的例子:

Python
def avg(x):
   return sum(x)/len(x)

以lambda的方式會寫成:

Python
avg=lambda x: sum(x)/len(x)

所以可以像這樣改寫

Python
avg=lambda x: sum(x)/len(x)
x =[1,2,3]
print(f"average of {x} is {avg(x)}")
x =[1,2,3,4]
print(f"average of {x} is {avg(x)}")

以上便是lambda函式的介紹,lambda的好處是當我們需要一個臨時的函數的時候可以不用分成那麼多行去撰寫。而何時使用lambda或是def 函式就必須看場合決定。

✔ 幫我們按個喜歡和分享,支持我們

平均分數 5 / 5. 給分人數 1

尚未有評分,請幫我評分歐

楊 明翰
楊 明翰

是一名八年級中段班的創業者與資料科學家

“With belief and action, we change the world.”

憑藉信念與行動,我們改變世界💪

更多關於站長

本文允許重製、散布、傳輸以及修改,但不得為商業目的之使用

使用時必須註明出處自:楊明翰 , 台灣人工智慧與資料科學研究室 https://aistudio.tw

標籤: def 函式

文章導覽

❮ Previous Post: 【Python 基礎教學】04 迴圈 for loop
Next Post: 【Start-up 創新創業】境外公司的基本概念 ❯

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

更多AI相關資訊,歡迎加入站長的粉絲團

Facebook

閱讀視覺風格選擇


實驗袍白 / 適合資料分析師、科學家
終端機黑 / 適合黑客、電腦工程師

專欄列表

  • Artificial intelligence 人工智慧 (3)
    • HPC 高效能運算 (1)
    • PyTorch (1)
    • 從頭實作AI (1)
  • Backend 後端開發 (1)
  • C++ 應用 (2)
  • Community 社群介紹 (1)
  • Data Engineering 資料工程與訊號分析 (1)
  • Java 開發與教學 (2)
  • Linux 入門 (5)
  • NLP/NLU 自然語言處理與理解 (4)
  • Philosophy 站長哲學 (5)
  • Python 開發與教學 (7)
    • Python Flask 網站開發 (1)
    • Python 中階 (1)
    • Python 入門 (5)
  • Slides會議簡報 (12)
  • Start-up 創新創業 (7)
  • 機器學習數學基礎 (1)
  • 私人筆記手稿 (4)
  • 線上教學目錄 (4)

近期發布

  • 【Linux 應用】使用Zenity零成本開發的多開瀏覽器管理器
  • 【Start-up 創新創業】如何選擇創業題目
  • 【自然語言處理與理解】Llama-2大語言模型CPU版本使用
  • 【個人演講】AI EXPO 2023 ChatGPT以及LLM
  • 【自訓課程】NGS 次世代基因體資料科學 課程

討論

尚無留言可供顯示。

年份彙整

  • 2023 (9)
  • 2022 (4)
  • 2021 (6)
  • 2020 (14)
  • 2019 (8)
  • 2018 (10)
  • 2017 (2)
  • 2016 (4)
  • 2015 (2)

ChatGPT GRU HPC llama-cpp LLM Log4J LSTM Node.js SMO SVM Zenity 人工智慧 人格特質 出資 創新 創業 多語言 多開瀏覽器 大語言模型 感知機 戰鬥 技術 技術合夥 技術股 撰寫程式 新創 新手 新聞輿情 最佳化 機器學習 死亡 現代C++ 系統日誌 股東權益 能力 證明 變數 負債 資本 資產負債表 長短期記憶 霍普菲爾 類神經網 類神經網路 風險

調整字型大小

A 縮小字型大小。 A 重設字型大小。 A 放大字型大小。

Copyright © 2023 AI STUDIO Taiwan.
聯絡我們 : whuang022@gmail.com
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Theme: Oceanly by ScriptsTown