在查看其他人的代码之前,我一直在尝试编写自己的记忆装饰器版本。老实说,这更像是一种有趣的练习。然而,在玩的过程中,我发现我不能用装饰器做我想做的事情。
def addValue( func, val ):
def add( x ):
return func( x ) + val
return add
@addValue( val=4 )
def computeSomething( x ):
#function gets defined
如果我想这样做,我必须这样做:
def addTwo( func ):
return addValue( func, 2 )
@addTwo
def computeSomething( x ):
#function gets defined
为什么我不能以这种方式将关键字参数与装饰器一起使用?我做错了什么,你能告诉我我应该怎么做吗?