Posted on 2012-05-08 12:23:39 python
# 因为wrap函数的参数只能是一个函数
# 而wrapper的参数又只能是传递给函数的参数列表
# 如果想要再次处理被装饰函数的返回结果,只能在最外层的函数参数中指定
# 这里就是在deco函数的参数中
# 如果只用两层嵌套就无法做到
def deco(render=None):
def wrap(func):
def wrapper(*args,**kwargs):
result = func(*args,**kwargs) ###
return render(result) ###
return wrapper
return wrap
my_render = lambda x: str(x) + ' --my_render'
@deco(render=my_render)
def test():
return "this is test!"
print test()
这里正是因为想让result被再次处理,所以要在最外层函数的参数中制定调用的处理函数,就是my_render。
Thkans for taking the time to post. It’s lifted the level of debate
Finding this post has anreeswd my prayers
autokredit nicht mehr bezahlbar kredit frage antworten quiz sofortkredit ohne postident autokredit was wird benötigt kredit aufnehmen hauskauf