python 假設有兩個 def aaa bbb ,我希望 bbb 傳進去參數可以一模一樣進去 aaa?
你想要讓 bbb() 能夠直接把它接收到的所有參數(包含位置參數、關鍵字參數)原封不動傳給 aaa(),可以用 Python 的 *args 和 **kwargs 來實現。?
✅ 範例做法
def aaa(*args, **kwargs):
print("aaa 收到位置參數:", args)
print("aaa 收到關鍵字參數:", kwargs)
def bbb(*args, **kwargs):
print("bbb 收到參數,準備轉給 aaa")
return aaa(*args, **kwargs)
# 測試
bbb(1, 2, 3, x=10, y=20)
輸出結果:
bbb 收到參數,準備轉給 aaa
aaa 收到位置參數: (1, 2, 3)
aaa 收到關鍵字參數: {'x': 10, 'y': 20}
說明
-
*args代表「所有位置參數」會被打包成 tuple -
**kwargs代表「所有關鍵字參數」會被打包成 dict -
當你再呼叫
aaa(*args, **kwargs)時,就會完全展開並傳回原本的參數格式。
如果你只想在 bbb 裡「固定加上一個參數」給 aaa,也可以這樣改:
def bbb(*args, **kwargs):
kwargs["extra"] = 999
return aaa(*args, **kwargs)

留言板
歡迎留下建議與分享!希望一起交流!感恩!