iT邦幫忙

2025 iThome 鐵人賽

DAY 4
0
AI & Data

ㄧ個八卦的時間也能了解AI最新趨勢系列 第 4

Day 4 把重複會用到的東西打包成專屬工具吧!Function 基本教學

  • 分享至 

  • xImage
  •  

嗨嗨大家~今天要跟大家介紹的是 Function(函式),這也是學習 Python 時必備的重要概念之一!
當我們真正寫程式時,常常會遇到同樣的動作需要重複很多次。像是在做 NLP 任務時,如果每次都要處理相同的事情,整段程式碼都得重新打一遍,不僅麻煩,也容易出錯,程式碼看起來也會很雜亂🤯。
因此我們會盡量避免重複的程式碼,如果有的話,一般會把它打包成「可以重複使用」的工具,而這個工具在 Python 中就稱為 function(函式)!

舉個簡單的例子好了,假設你今天有一串數字

2,5,8,12,56,100

你任務是要把兩個兩個數字加起來再乘以2,再不寫function 的情況下,你可能會這樣寫:

a = (2 + 5)* 2
print (a)
b = (8 + 12)*2
print (b)
c = (56 + 100)*2
print (c)

每多一對數字我們都要多打一行,而且你會發現,其實你都在打相同的東西😵,
但如果有我們有先定義一個function add

def add (a,b):
    ans = (a+b)*2
    return ans

當有一組新的值需要計算時,我們只需要這樣寫

print (add(3,4))
#回傳值
14

有沒有覺得程式碼變得比較乾淨!(有吧有吧)
所以通常我們在寫程式時,如果是需要重複使用的程式碼,會盡量把它寫成 function 的形式。

其實有點像用咖啡機煮咖啡的概念xd
平常如果不用咖啡機煮咖啡,我們要做很多步驟像是磨豆、燒水、沖泡、倒出等等的 (應該是省略了很多過程 xd 我不是咖啡達人 大概就好🙂‍↕️)
而咖啡機就是整個泡咖啡的流程都寫在機器裡面了,我們只要放材料、按按鈕,就能隨時做出一杯一模一樣的咖啡。

有了這一點小概念之後,我來們來說說一個function 通常會怎麼寫!

function怎麼寫?

我們以最一開始有說到的這個 add 舉例

def add (a,b):
    ans = (a+b)*2
    return ans

我們先看到第一行,這邊的def 就是在告訴python 說,我要開始定義一個函式了,而後面的 add 就是你要幫這個函式取的名稱。再來你會看到括號裡面有ab,這是在說 如果要呼叫這個函式的話,應該要給他幾個參數,以這邊來說,就是兩個,ab

第二行開始就是在「設定流程」也就是,得到這些參數之後,這個函式會幫忙做什麼事情。
以這裡來說,可以看到就是會將ab 相加起來後,再乘以2 然後存在ans這個變數中。

那最後一行 return 是指說,在運行完這個函式後,最後應該要回傳什麼結果,
以這邊來說,就是要回傳 ans 這個變數

小小總結這段程式碼的意思就是:「定義一個名為add的函數,需要輸入a以及b 兩個參數,才能執行這段函式。這個函式會將ab 相加後乘以二,並把答案存在ans 中,最後這個函式會輸出ans 作為執行結果。」

講回剛剛煮咖啡的例子,整台咖啡機就很像是一個function, 他就是幫忙處理「泡咖啡」這件事整個流程,而裡面的材料像是咖啡豆就是整個function 裡面的參數,最後的咖啡就是執行的結果☕️

小試身手

那有這些小概念後,我們來個小試身手 (建議打開你的編輯器打打看喔!)

今天想要寫一個函式,當輸入一個數值後,他會回傳輸入值的兩倍

print(double_number(2))
#回傳結果
4

你會怎麼寫呢👽?

將將 參考答案在這兒👇

def double_number(n):
    ans =  n * 2
    return ans

這段程式碼的意思就是:「有一個double_number 的函數,他接收一個參數n。在接收到這個n 後他會將n乘以2 然後存在ans 這個變數中,最後函式會輸出ans。」

特別注意在打function 時,要記得留意「縮排」,不然程式碼可能不會順利運行喔🥸

是不是很簡單~~
其實function 裡面的寫法其實沒有標準答案,每個人都有自己習慣的寫程式方式,解法也不一定只有一種,所以只要確保輸出的答案是你希望的樣子就好!

好拉~今天一樣是偏向處理資料會用到的一些實用的技巧,希望大家能吸收!
我們明天見拉😆~


上一篇
Day 3 疑?我的檔案在哪?搞資料前搞清楚讀檔&檔案位置!
下一篇
Day 5 if&else 邏輯判斷!
系列文
ㄧ個八卦的時間也能了解AI最新趨勢5
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言