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)