0
對不起,如果我沒有清楚解釋我自己。 我想創建一個包裝,以不同數量的輸入調用預定義的函數。當然,我可以爲每個函數創建一個單獨的包裝器,但是我想知道是否有辦法爲所有情況創建一個通用包裝器。將不確定數量的輸入傳遞給一個功能的子功能
應該調用的函數被命名爲「fun1」和「fun2」,其輸入數量不同。我需要創建一個包裝'fun_wrap(func_name,不確定數量的輸入)',它只需要調用函數名稱及其相關的輸入量。
還有一件事,我需要通過添加'_in'來改變輸入名稱,並首先將它們設置爲全局變量。以下是我的破解代碼。感謝您的任何建議!
def fun1(a,b):
return a+b
def fun2(a,b,c):
return a*b/c
def set_globals(**kwargs):
for argname in kwargs:
globals()['%s_in' % argname] = kwargs[argname]
def fun_wrap(func_name, uncertain amount of inputs):
ffunc_name(set_globals(uncertain amount of inputs))
這樣一來,如果我能與像參數調用final_fun:
fun_wrap(fun1,a,b)
fun_wrap(fun2,a,b)
UPDATE
我試圖用* ARG,但失敗了......
def fun1(a,b):
return a+b
def fun2(a,b,c):
return a*b/c
def set_globals(**kwargs):
for argname in kwargs:
globals()['%s_in' % argname] = kwargs[argname]
def fun_wrap(func_name, *arg):
func_name(set_globals(*arg))
fun_wrap(fun2,a=1,b=2,c=3)
了錯誤:
Traceback (most recent call last):
File "D:\Dropbox\AppPest\rice\try.py", line 19, in <module>
fun_wrap(fun2,a=1,b=2,c=3)
TypeError: fun_wrap() got an unexpected keyword argument 'a'
這段代碼沒有意義 - 爲什麼要設置這些全局變量? –
「我需要通過添加'_in'來改變輸入名稱,並首先將它們設置爲全局變量。」 - 如果可以的話,最好現在回去改變'fun1'和'fun2'。 –
如果你想用'fun_wrap(fun1,a,b)'''這樣的位置參數來調用你的包裝器,你正在使用'** kwargs'來處理關鍵字參數,試着用'* args'來代替。也可以使用第一個參數來接收您要調用的函數。 –