說明
說我有以下的功能,這使得另一個函數的調用:的Python:把所有函數參數爲** kwargs自動
def f1(arg1, arg2, arg3):
f2(...)
的f1
和f2
的參數是相同的或f2
可能是這樣的:
def f2(**kwargs)
pass # whatever
客戶端代碼將定義和調用f1
,並且要求f1
的簽名明確定義了所有參數,因此不允許**kwargs
用於f1
。
因此,爲了從內部f1
我不得不這樣做是爲了f2
呼叫:
def f1(arg1, arg2, arg3):
f2(arg1, arg2, arg3)
問題
有沒有一種方法,我可以傳遞參數f2
沒有明確地寫呢?理想情況下,我認爲它應該看起來像這樣:
def f1(arg1, arg2, arg3):
kwargs = <Some Magic Here>
f2(**kwargs)
任何魔法?
UPDATE
可能的解決方案
有沒有一種方法,我可以結合locals()
和inspect.getargspec()
聚集我的**kwargs
?
感謝您的回答。我更新了我的問題。問題是'f1'將由客戶端定義,參數的處理對所有人來說都是通用的,所以我想隱藏處理細節,以便客戶端將所有參數傳遞給實現。此外,我想放寬定義並自動傳遞所有參數,而不是明確指定它們。 – bagrat
在這種情況下,你可以使用'locals()'。 'a'中的 –
我可以撥打'd',在'd'中我可以使用'inspect'來獲得'a',這是'locals'。使用'inspect.getargspec'另外驗證'locals'是否有意義? – bagrat