【python】python中装饰器简单介绍及代码实践

本文介绍了Python装饰器的基本概念,强调其在不改动原函数代码和调用方式的情况下为函数添加新功能的优势。通过实例解析了装饰器的实现与应用。
摘要由CSDN通过智能技术生成
  1. 装饰器的好处就是在不用更改原函数的代码前提下给函数增加新的功能
  2. 两个原则:
    不能修改被装饰的函数的源代码
    不能修改被装饰的函数的调用方式
对无参函数进行装饰 
def total_time(func):
    def wrapper():
        start = datetime.datetime.now()
        func()
        stop = datetime.datetime.now()
        time = (stop - start).seconds
        print(time)
    return wrapper

@total_time
def pri():
    print("计算程序执行时间")

if __name__ == "__main__":
    pri()
# #原理:
1.执行函数pri()时,会先调用total_time函数,将被装饰的函数pri当做入参传入(此时未pri)
2.在执行total_time函数时,直接把内部函数wrapper返回了,同时把它赋值给pri
3.(重点)此时的pri已经不是未加装饰时的pri了,而是指向了total_time.wrapper函数地址了
4.接下来,执行新pri函数,即total_time.wrapper函数,先start赋值,然后调用原来的pri(),该处的pri就是通过装饰传进来的参数pri
对有参函数进行装饰
def total_time(func):
    def wrapper(*args,**kwargs):
        start = datetime.datetime.now()
        func(*args,**kwargs)
        sto
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值