0
我努力尋找一種能夠複製函數,重命名並應用參數的解決方案。一個例子是多個解說模塊中的重複函數和更改默認參數
我有一個模塊:
get(a, c=4, ver=False):
...
set(a, b, c=4, ver=False):
...
等
,並希望創造相應的功能所有這些功能如果用手工
ver_get(*args, **kwargs):
kwargs['ver'] = True
return get(*args, **kwargs)
ver_set(*args, **kwargs):
kwargs['ver'] = True
return set(*args, **kwargs)
我做已經嘗試了for循環遍歷所有的函數,但由於f的後期綁定問題而失敗(參見下文)。由於使用了* args,** kwargs,我無法將提供函數f作爲輸入的正常解決方法。
funcs = {}
g = None
f = None
for g, f in globals().iteritems():
funcs['ver_'+g] = lambda *args, **kwargs: f(*args, **dict(kwargs, ver=True))
此後funcs也需要包含在全局變量中。
爲什麼我要這樣做?只需要更好的語法而不需要手動複製函數。