保存裝飾函數的簽名
kwargs = dict((k,int(v))在kwargs.items())中的k,v 返回f(*args,** kwargs) 返回g 當裝飾按預期運行時,裝飾函數的簽名被“ [*kwargs''替換,丟失了有關原始參數的信息。滿足:
手動將簽名複製到docString中。為每個特定的簽名創建一個新的裝飾器。
exec。解決方案:導入裝飾器 @Decorator.decorator def args_as_ints(f, *args,** kwargs): args = [x in args中的x] kwargs = dict((k,int(v))在kwargs.items())中的k,v return f(*args, **kwargs)
This decorator preserves the original function's signature by passing it as arguments to the wrapped function.def args_as_ints(f):
def g(*args, **kwargs):
args = [int(x) for x in args]
kwargs = dict((k, int(v)) for k, v in kwargs.items())
return f(*args, **kwargs)
return g
@args_as_ints def funny_function(x,y,z = 3): “”“計算x*y 2*z”“” 返回x*y 2*z python 3.4:
kwargs = dict((k,int(v))在kwargs.items())中的k,v 返回func(*args,** kwargs) 通過使用這些技術,Decorator可以在保留其原始簽名時增強功能功能,從而確保代碼庫中的清晰度和一致性。免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3