iT邦幫忙

2026 iThome 鐵人賽

DAY 17
0
佛心分享-IT 人自學之術

當 Python 初學者遇到 AI:30 天人機協作學習手記系列 第 17 篇

[Day 17] 進階第三關:別再複製貼上了!用 def 把程式碼打包成樂高積木

  • 分享至 

  • xImage
  •  

今日對話:如何製造自己的「樂高積木」?

我的 Prompt(提示詞):

「我發現我常常在寫重複的程式碼,修改時還要每個地方都改一遍,很麻煩。請教我如何用 def 建立自訂函式?另外,我看高手的程式碼裡面常常有 *args 和 * *kwargs,那些星號到底是什麼黑魔法?請用白話文和簡單的生活例子說明。」

AI 導師的建議與拆解

AI 導師笑著說,自訂函式就像是「打造自己的微波爐」:

  1. 丟入食材(參數 Parameters)
  2. 微波加熱(內部邏輯)
  3. 端出熱菜(回傳值 Return)

除此之外,AI 還幫我破解了星號魔法:

  • args (一顆星):把不確定數量的「無名參數」,全部打包成一個 Tuple (元組)。
    白話文:就像你去超市結帳,收銀員不管你拿了 3 件還是 50 件商品,他就是一件件刷條碼加總。

    • kwargs (兩顆星):把不確定數量的「具名參數(有名字的變數)」,全部打包成一個 Dictionary (字典)。
      白話文:就像填寫客製化履歷表,除了必填的「姓名」,你可以自由新增「專長="Python"」、「身高=180」等無限擴充的鍵值對。

實作筆記與驗證

我在 VS Code 建立了 day17.py檔案,把這三種函式的用法全部實作了一遍:

python
#1. 基礎函式:打折計算機
#定義 (def) 一個函式,接收價格與折扣,回傳 (return) 最終金額
def calculate_discount(price, discount=0.8): # discount 預設為 8 折
final_price = price * discount
return int(final_price) # 端出結果

#呼叫函式:不用再重寫邏輯,直接用!
print(f"衣服打折後:{calculate_discount(1000)} 元")
print(f"電腦打六折:{calculate_discount(30000, 0.6)} 元")

print("-" * 30)

#2. 一顆星魔法:*args (接收無限數量的商品金額)
def shopping_cart(*args):
print(f"收到的 args 內容是:{args},它的型別是 {type(args)}")
total = sum(args) # sum() 可以直接加總 tuple 裡的數字
return total

print(f"購物車總額:{shopping_cart(100, 50, 300, 99)} 元")

print("-" * 30)

#3. 兩顆星魔法:kwargs (接收無限擴充的個人資料)
def create_profile(name, **kwargs):
print(f"\n[{name} 的個人檔案]")
print(f"收到的 kwargs 內容是:{kwargs},型別是 {type(kwargs)}")

#因為 kwargs 是字典 (Dictionary),我們可以用 for 迴圈把它印出來
for key, value in kwargs.items():
print(f"- {key}: {value}")

#呼叫時,可以用「變數名稱=值」的方式自由擴充
create_profile("Alice", age=25, job="工程師")
create_profile("Bob", hobby="打籃球", location="台北", is_vip=True)

今日小結

今天我們學會了如何把自己的程式碼打包成樂高積木,除錯跟擴充都變得非常輕鬆!


上一篇
[Day 16] 進階第二關:程式當機救星!用 try-except 優雅地接住錯誤 (例外處理)
下一篇
[Day 18] 進階第四關:站在巨人的肩膀上!模組匯入與最強武器庫 (pip)
系列文
當 Python 初學者遇到 AI:30 天人機協作學習手記 共 18 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言