关于python装饰器的总结

Comments(3)


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。

后一篇: tornado长连接断开的处理机制

Captcha:
验证码

Email:

Content: (Support Markdown Syntax)


yCWunii5  2016-12-30 05:32:35 From 188.143.232.27

Thkans for taking the time to post. It’s lifted the level of debate


KeovF8CoZIr  2016-12-30 08:44:38 From 188.143.232.27

Finding this post has anreeswd my prayers


wRxAkqvm6  2017-01-05 06:30:34 From 188.143.232.27

autokredit nicht mehr bezahlbar kredit frage antworten quiz sofortkredit ohne postident autokredit was wird benötigt kredit aufnehmen hauskauf