python基础 day11

本文深入探讨了Python装饰器的设计原则、固定模式及其本质。通过具体示例,讲解了如何利用装饰器在不修改原函数调用方式的情况下,为其添加额外功能。装饰器作为一种强大的编程工具,能够有效遵循开放封闭原则,实现代码的高效扩展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#装饰器形成的过程
#装饰器的作用
#原则:开放封闭原则
#装饰器的固定模式
#装饰器的本质:闭包函数
# import time
# time.time() #1970年后到现在过了多少秒
# time.sleep() #停留多少秒

# def func():
# time.sleep(0.01)
# print('老板同事大家好!')
# def timer(f): #装饰器函数
# def inner():
# start=time.time()
# f() #被装饰的函数
# end=time.time()
# print(start-end)
# print(inner.__closure__)
# return inner
# func=timer(func)
# func()

#不想修改函数的调用方式,但是还想在原来的函数前后添加功能
#timer就是一个装饰器函数,只是对一个函数有一些装饰作用

#装饰器的固定格式
# def wrapper(func): #func被装饰的函数
# def inner(*args,**kwargs): #inner接收被装饰函数的参数
# ret=func(*args,**kwargs) #ret接收被装饰函数的返回值
# return ret #返回被装饰函数的返回值
# return inner #返回内部函数名
def wrapper(func):
    def inner(*args,**kwargs):
        print('在被装饰的函数执行之前做的事')
        ret=func(*args,**kwargs)
        print('在被装饰的函数执行之做的事')
        return ret
    return inner
@wrapper
def holiday(day):
    print('全体放假%s天'%day)
    return '好开心'
ret=holiday(3)
print(ret)
装饰器

 





转载于:https://www.cnblogs.com/Forget-the-sky/p/10635748.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值