python学习之装饰器的wraps作用

Posted 秋雨的蝴蝶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习之装饰器的wraps作用相关的知识,希望对你有一定的参考价值。

未加@wraps

# def tag(name):
# def decorator(func):
# def wrapper(text):
# value=func(text)
# return "<{name}>{value}</{name}>".format(name=name,value=value)
# return wrapper
# return decorator
#
# @tag("p")
# def my_upper(text):
# value=text.upper()
# return value
# print (my_upper("hello"))
# print (my_upper.__name__)

输出:wrapper



加上@wraps
def tag(name):
def decorator(func):
@wraps(func)
def wrapper(text):
value=func(text)
return "<{name}>{value}</{name}>".format(name=name,value=value)
return wrapper
return decorator

@tag("p")
def my_upper(text):
value=text.upper()
return value
print (my_upper("hello"))
print (my_upper.__name__)

输入:my_upper

二者之间的区别在于加上@wraps 原函数func被decorator(装饰器)作用后,函数性质不变

以上是关于python学习之装饰器的wraps作用的主要内容,如果未能解决你的问题,请参考以下文章

python装饰器的wraps作用

干货来了!python学习之重难点整理合辑1

基础学习之第十二天(装饰器的进阶)

python学习之-装饰器

Python学习之装饰器

python3 装饰器修复技术@wraps到底是什么?