zoukankan      html  css  js  c++  java
  • 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(装饰器)作用后,函数性质不变
  • 相关阅读:
    project
    类欧几里得算法
    还不熟悉的内容
    Hall定理
    FWT学习笔记
    最小树形图
    BZOJ 3027 [Ceoi2004]Sweet
    多项式除法
    VUE 计算属性和侦听器
    VUE 模板语法
  • 原文地址:https://www.cnblogs.com/jinpingzhao/p/12580398.html
Copyright © 2011-2022 走看看