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)可以让函数名变回来。


新闻标题:python装饰器中的@wraps
当前路径:http://www.hxwzsj.com/article/popsjj.html

其他资讯

Copyright © 2025 青羊区翔捷宏鑫字牌设计制作工作室(个体工商户) All Rights Reserved 蜀ICP备2025123194号-14
友情链接: 专业网站建设 响应式网站设计 移动网站建设 成都网站制作 成都网站设计 高端定制网站设计 成都响应式网站建设公司 网站建设推广 成都网站建设 专业网站设计 高端网站设计 泸州网站建设 成都定制网站建设 成都网站建设 商城网站建设 成都品牌网站建设 高端网站建设 成都网站建设 定制网站建设 高端网站设计推广 成都网站建设 成都网站制作