python装饰器学习案例

该案例是介绍装饰器不含参和含参的区别和使用方式:

不改变原来核心业务逻辑的基础上(如充电、自我介绍),新增外加功能(计时),

装饰器的应用场景:

日志记录: 装饰器可用于记录函数的调用信息、参数和返回值。

性能分析: 可以使用装饰器来测量函数的执行时间。

权限控制: 装饰器可用于限制对某些函数的访问权限。

缓存: 装饰器可用于实现函数结果的缓存,以提高性能。

复制代码
#写一个充电的功能
import time
#定义一个装饰器:无参,用于统计计算一个程序执行的时长
def count_time(func):
    def wrapper(*args,**kwargs):
        start_time = time.time()
        response = func(*args,**kwargs)
        end_time = time.time()
        use_time = int(end_time-start_time)
        print(f"\n耗时{use_time}秒")
        return response
    return wrapper

#定义一个传参的装饰器,执行者是谁
def outer(name):
    def inner(func):
        def wrapper(*args,**kwargs):
            start_time = time.time()
            response = func(*args,**kwargs)
            end_time = time.time()
            use_time = int(end_time-start_time)
            print(f"\n耗时{use_time}秒,属于{name}操作")
            return response
        return wrapper
    return inner

@count_time
def charge(num):
    for i in range(num,101):
        time.sleep(0.05)
        print(f"\r充电中{'▋'*i}{i}%",end="")
@count_time
def introduce(name,age,job):
    time.sleep(2)
    print(f"大家好,我的名字叫{name},我今年{age}岁了,我的是从事{job}工作,很高兴认识大家,谢谢!")
    time.sleep(2)


@outer("李四")
def introduce1(name,age,job):
    time.sleep(2)
    print(f"大家好,我的名字叫{name},我今年{age}岁了,我的是从事{job}工作,很高兴认识大家,谢谢!")
    time.sleep(2)

@outer(name="张三")
def charge1(num):
    for i in range(num,101):
        time.sleep(0.05)
        print(f"\r充个电中{'▋'*i}{i}%",end="")

charge(40)
introduce("张三",22,"python开发工程师")
charge1(20)
introduce1("李四",24,"python开发工程师")
相关推荐
君顾12 小时前
智慧零售实战指南:从技术架构到落地方案全解析
java·开发语言·零售
南棱笑笑生2 小时前
20260904实测给飞凌OK3576-C开发板刷入Rockchip原厂的IMG固件【使用飞凌的DTS】切换串口波特率为1.5Mbps
c语言·开发语言·rockchip
问天_观心2 小时前
大模型微调学习(二)
人工智能·python·深度学习·学习·语言模型·transformer
洋洋不叫杨杨2 小时前
揭秘当下知名的SEO优化渠道,你知道几个?
大数据·python
阿童木写作2 小时前
跨境图片翻译工具推荐:批量处理视频字幕与智能抠图
python·音视频
指掀涛澜天下惊2 小时前
强化学习进阶篇八 策略梯度算法
深度学习·学习·算法·强化学习
平头哥技术团队2 小时前
Day 10 | 工欲善其事:VS Code 配置与项目归档
android·开发语言·前端·javascript·html·交互
乌萨奇也要立志学C++2 小时前
【洛谷】kmp算法
开发语言·算法
梦想的颜色2 小时前
OCR 识别原理与 Python 识图全实战:从文字提取到图像内容理解
python·计算机视觉·ocr·图像识别·python 识图
禹凕3 小时前
Dijkstra算法详解与应用
python·算法