华子的代码空间

逆水行舟,不进则退。 关注系统编程、网络编程、并发、分布式。

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

posted on 2012-05-08 12:23  华子的代码空间  阅读(193)  评论(0编辑  收藏  举报

导航