iT邦幫忙

2025 iThome 鐵人賽

DAY 17
0
Software Development

學會 Python 不可怕:我每天學一點的 30 天筆記系列 第 17

Day17 : 函式進階 – 預設參數、可變參數、作用域

  • 分享至 

  • xImage
  •  

1. 預設參數 (Default Parameters)
有時候會希望函式的某些參數有「預設值」,這樣呼叫函式時就可以不用每次都傳入
https://ithelp.ithome.com.tw/upload/images/20251001/20178872OIXk2LnUZW.png
結果會輸出
https://ithelp.ithome.com.tw/upload/images/20251001/20178872aDAoiHCCjb.png

  • 如果呼叫時沒有傳值,會用預設值 ; 如果傳了值,就會覆蓋掉預設值
  • 首先先定義一個函式 greet,它有一個參數 name,name="同學" 表示如果呼叫函式時沒有給名字,就會用 "同學" 當作預設值
  • f"哈囉,{name}!" 是 f-string,可以把變數 name 的值放進字串裡
  • f"..." 這種寫法叫 f-string(格式化字串),它的用途是:可以把變數的值放進字串裡
  • {} 大括號裡放變數,Python 會自動把變數的值塞進去

2. 可變參數 (Variable Arguments)
有時候我們不知道會傳進來幾個參數,這時候可以用:

  • *args → 接收多個位置參數(會變成一個 tuple)
  • **kwargs → 接收多個關鍵字參數(會變成一個 dict)

*args範例
https://ithelp.ithome.com.tw/upload/images/20251001/20178872BgpN150L3x.png
結果會輸出
https://ithelp.ithome.com.tw/upload/images/20251001/20178872gLjpf5j4Zp.png

  • *args 的意思是:可以接收「不固定數量」的參數,也就是可以傳 2 個、3 個,甚至 10 個數字都沒問題
  • 首先先設定一個 total = 0 當計算的起點
  • for num in args 會把傳進來的數字一個一個取出來,每次都加到 total 裡
  • return total : 最後再把加總後的數字送回去

**kwargs範例
https://ithelp.ithome.com.tw/upload/images/20251001/20178872711cx0ZAwz.png
結果會輸出
https://ithelp.ithome.com.tw/upload/images/20251001/201788725Zw77c8hCW.png

  • **kwargs 的意思是:可以傳入「不固定數量」的參數,而且這些參數會用 key=value 的形式給函式
  • 在函式裡,kwargs 會變成一個字典 (dict)
  • 首先用def → 定義函式的關鍵字,show_info → 是函式的名稱,(**kwargs) → 代表這個函式可以接收不固定數量的關鍵字參數
  • .items() 會把字典拆成「鍵值對 (key-value pair)」
  • 每次迴圈取出一組 → key 就是參數名稱,value 就是參數的值

3. 作用域 (Scope)
程式中變數的「可見範圍」,叫做作用域。在 Python 裡常見兩種:

  • 區域變數 (Local Variable):在函式內宣告,只能在函式內使用
  • 全域變數 (Global Variable):在函式外宣告,整個程式都能用
    https://ithelp.ithome.com.tw/upload/images/20251001/20178872aJPZSmQJDU.png
    結果會輸出
    https://ithelp.ithome.com.tw/upload/images/20251001/20178872HTEJ8T3sjN.png
    如果想在函式裡修改全域變數,可以用 global 關鍵字:
    https://ithelp.ithome.com.tw/upload/images/20251001/20178872R2edQxbvNy.png
    結果會輸出1
    https://ithelp.ithome.com.tw/upload/images/20251001/20178872aiS7Ofww7H.png
  • 首先先定義一個函式叫 add_one,它的功能是「把 count 加 1」
  • 加上 global count,就表示「要用外面那個 count」,沒有這一行,Python 會以為你要在函式裡新建一個「自己的 count」
  • 如果不用 global,函式裡的變數會是自己的,不會影響外面的值

4. 練習1
https://ithelp.ithome.com.tw/upload/images/20251001/20178872Xz7oGtcXlV.png
結果會輸出
https://ithelp.ithome.com.tw/upload/images/20251001/201788726eQXDcsxem.png

5. 練習2
https://ithelp.ithome.com.tw/upload/images/20251001/20178872Ukdgi0GddL.png
結果會輸出
https://ithelp.ithome.com.tw/upload/images/20251001/20178872oxI6Ah3wuM.png

  • *args:代表可以傳「任意多個參數」,像 multiply_all(2,3,4,5)
  • 一開始設 result = 1,因為乘法的「起點」要是 1(就像加法用 0)

6. 練習3
https://ithelp.ithome.com.tw/upload/images/20251001/20178872XOR8wPdr0D.png
結果會輸出
https://ithelp.ithome.com.tw/upload/images/20251001/20178872O042oKTQtL.png


上一篇
Day16 : 函式基礎 – 定義、呼叫、參數、回傳值
下一篇
Day18 : 模組與套件 – import、常用模組
系列文
學會 Python 不可怕:我每天學一點的 30 天筆記18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言