iT邦幫忙

2025 iThome 鐵人賽

DAY 9
0

你應該有用過自動販賣機吧!就是把錢丟進去,就可以有飲料掉出來的那種機器。而我們今天要研究的函式,就跟自動販賣機非常相似。

回顧一下我們在第六章做的計程車範例:

# 這行是設定變數
distance_km = 2

# 用變數繼續進行後續的計算
distance_m = distance_km * 1000
extra_distance = distance_m - 1250
price = 85 + (extra_distance // 200) * 5

然而當我們想要計算不同公里數的價格時,就需要不斷的去修改最上面那一行的數值。但是函式可以幫我們把下面的計算過程包裝起來,方便我們重覆使用:

# calc_price 這個函式接受一個輸入資料,我們稱之為「參數」
def calc_price(distance_km):
	distance_m = distance_km * 1000
	extra_distance = distance_m - 1250
	# 用 return 將最後的結果送出,不需要像上面用 price 變數接住
	return 85 + (extra_distance // 200) * 5

然後我們就可以重覆的利用這個函式了

# 操作函式時,在函式的名字後面加 `()` 表示呼叫,並在括號中放進我們要給他的輸入,
# 呼叫函式時傳進去的資料,有個特定的稱呼叫「引數」。不過也有人會一樣叫它們「參數」
# 前面用變數指派,接住回傳的結果
# 像這樣可以計算 2 公里的價格
price_a = calc_price(2)

# 計算 5 公里的價格
price_b = calc_price(5)

# 計算 15 公里的價格
price_c = calc_price(15)

函式參數

上面的範例是只接收一個參數的函式。而函式也可以有零參數或是多個參數的版本

# 接收兩個參數的函式
def sum(a, b):
	return a + b
	
# 呼叫函式
sum(1, 2)
#=> 3

# 傳錯引數數量會出錯
sum(1)
#>>>
# Traceback (most recent call last):
# File "<python-input-1>", line 1, in <module>
#    sum(1)
#    ~~~^^^
#TypeError: sum() missing 1 required positional argument: 'b'
# 接收零個參數的函式:
def ten():
  return 10

除了固定個數參數的函式之外,還有預設參數的函式:如果少傳參數就會用預設值。以及不固定參數的函式。試著跟 AI 對話問問看吧!

我想了解 Python 的函式宣告中,各種參數的用法,例如「預設參數」、「不固定長度參數」、「具名參數」的宣告方式、範例以及用途。

一定要回傳嗎?

函式裡會用 return 關鍵字來回傳計算完成的資料。要記得函式只要運行到 return 這個字的時候,就會立刻終止函式,並回傳後面的資料。

當然函式也可以沒有回傳值,大多的狀況,會用在單純的列印一段字串。跟 AI 討論看看吧!

我想了解 Python 的函式中,什麼情況會用到無回傳值的函式?

小結

函式在概念上很簡單,不過他在程式裡有非常多厲害的用法。在之後進階的章節裡,我們會說明更多函式的概念與使用技巧喔!

新手村魔王挑戰前的營火

  1. 什麼是函式?
    A) 一段可以重複使用的程式碼,有名字可以呼叫
    B) 一種特殊的變數
    C) 一種迴圈
    D) 一種資料型別

  2. 函式的「參數」是什麼?
    A) 函式的名稱
    B) 函式執行後的結果
    C) 傳遞給函式的資料,讓函式可以根據不同輸入做處理
    D) 函式內部的變數

  3. 使用函式的最大好處是什麼?(可複選)
    A) 程式碼可以重複使用,不用一直複製貼上
    B) 讓程式更有組織,容易閱讀
    C) 程式執行速度會變快
    D) 可以把複雜的任務分成小部分處理

  4. 以下程式碼有什麼問題?

def greet_student(name): 
  print(f"你好,{name}!") 
  
greet_student()
A) 函式名稱不能有底線  
B) 呼叫函式時沒有給參數  
C) print 的語法錯誤  
D) 沒有 return
  1. 請寫一個函式 multiply(a, b),接收兩個數字參數,回傳它們相乘的結果。並呼叫這個函式計算 6 × 7,把結果存到變數 answer 中並印出來。

恭喜!我們打開整個新手村的地圖了!


上一篇
Ch 7. 能夠走進叉路與轉圈圈也是很重要的
下一篇
Ch 9. 新手村回顧與挑戰
系列文
Just enough code with AI: 給新手們的程式設計世界觀10
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
taiansu
iT邦新手 3 級 ‧ 2025-09-23 15:19:55

本篇之前還需補充輸出、輸入、VSCode extension 及 Copilot

我要留言

立即登入留言