今日對話:如何製造自己的「樂高積木」?
我的 Prompt(提示詞):
「我發現我常常在寫重複的程式碼,修改時還要每個地方都改一遍,很麻煩。請教我如何用 def 建立自訂函式?另外,我看高手的程式碼裡面常常有 *args 和 * *kwargs,那些星號到底是什麼黑魔法?請用白話文和簡單的生活例子說明。」
AI 導師笑著說,自訂函式就像是「打造自己的微波爐」:
除此之外,AI 還幫我破解了星號魔法:
args (一顆星):把不確定數量的「無名參數」,全部打包成一個 Tuple (元組)。
白話文:就像你去超市結帳,收銀員不管你拿了 3 件還是 50 件商品,他就是一件件刷條碼加總。
我在 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)
今天我們學會了如何把自己的程式碼打包成樂高積木,除錯跟擴充都變得非常輕鬆!