python装饰器中的@wraps-创新互联
                                            python装饰器中的@wraps
第一段代码:没有添加@wraps

def user_login_confirm(name):
    print('我是', name)
    def deco_fun(view_func):
        print('准备变身。。。')
        def wrapper():
            view_func()
            print('变身完成。。。')
        return wrapper
    return deco_fun
@user_login_confirm('小辣椒')
def tony():
    print('我是', tony.__name__)
tony()运行结果:
我是 小辣椒
准备变身。。。
我是 wrapper
变身完成。。。第二段代码:多加一个tony函数
def user_login_confirm(name):
    print('我是', name)
    def deco_fun(view_func):
        print('准备变身。。。')
        def wrapper():
            view_func()
            print('变身完成。。。')
        return wrapper
    return deco_fun
@user_login_confirm('小辣椒')
def tony():
    print('我是', tony.__name__)
def tony():
    print('我是', tony.__name__)
tony()运行结果:
我是 小辣椒
准备变身。。。
我是 tony第三段代码:添加了@wraps
from functools import wraps
def user_login_confirm(name):
    print('我是', name)
    def deco_fun(view_func):
        print('准备变身。。。')
        @wraps(view_func)
        def wrapper():
            view_func()
            print('变身完成。。。')
        return wrapper
    return deco_fun
@user_login_confirm('小辣椒')
def tony():
    print('我是', tony.__name__)
tony()结论:
装饰器将被装饰函数变为了wrapper函数,连函数名也变了,通过@wraps(func)可以让函数名变回来。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
当前名称:python装饰器中的@wraps-创新互联
网站路径:http://www.scyingshan.cn/article/didhhp.html

 建站
建站
 咨询
咨询 售后
售后
 建站咨询
建站咨询 
 