【发布时间】:2017-01-15 04:31:22
【问题描述】:
我最近了解了装饰器,想知道是否可以在函数定义中而不是在函数调用中使用它们,作为某种通用包装器。
原因是,我想通过用户定义的接口从模块调用函数,该接口对函数执行可重复的操作,并且我不想为每个函数实现包装器。
原则上我想要类似的东西
def a(num):
return num
@double
a(2)
返回 4 而无需访问 a 的实现。
或者在这种情况下会是一个像
def mutiply(factor,function,*args,**kwargs):
return factor*function(*args,*kwargs)
是更好的选择吗?
【问题讨论】:
-
我不确定我是否理解。您想装饰您正在使用的某个第 3 方模块中的功能吗?
-
我有点疑惑你为什么要装饰任何东西?
-
@joelgoldstick 有点像。如果可能的话,我想做一个全局包装器。
-
我会使用你的
multiply(factor, function),因为你的要求是不可能的。