Python 装饰器

1.装饰器 decorator   

     执行有装饰器的函数,现将函数看做参数传入装饰器,最后根据返回值去接着执行该函数。

     其意义在于执行某个函数的前后可以执行其他的函数或者语句,可以复用。

@log放到now()函数的定义处,相当于执行了语句:

now = log(now)
mport time
import functools
def metric(fn):
    print('%s executed in %s ms' % (fn.__name__, 10.24))
    return fn


@metric
def fast(x, y):
    time.sleep(0.0012)
    return x + y

@metric
def slow(x, y, z):
    time.sleep(0.1234)
    return x * y * z

f = fast(11, 22)
s = slow(11, 22, 33)
if f != 33:
    print('测试失败!')
elif s != 7986:
    print('测试失败!')

def logger(text):
    def decorator(func):
        @functools.wraps(func)  #保留函数的__name__值  wrapper.__name__ = func.__name__
        def wrapper(*args, **kw):
            print('%s %s():' % (text, func.__name__))
            func(3, 6)
            print(*args, **kw)
            return print(111)
        return wrapper
    return decorator

@logger('DEBUG')
def today(x,y):
    print(x+y)
    print('2015-3-25')

today(1,2)
print(today.__name__)

参考:https://www.liaoxuefeng.com/

           https://blog.csdn.net/houzeyu666/article/details/81938119

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值