python装饰器中的@wraps-创新互联
python装饰器中的@wraps
第一段代码:没有添加@wraps
我们提供的服务有:网站设计、做网站、微信公众号开发、网站优化、网站认证、邛崃ssl等。为超过千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的邛崃网站制作公司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://ybzwz.com/article/didhhp.html