关于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。

原文地址:https://www.cnblogs.com/huazi/p/2489881.html