当前位置:首页 > 行业热点 > 正文
Python初步了解装饰器
来源:博客园  时间:2023-09-08 20:31:45
字号:


(资料图片仅供参考)

Python初步了解装饰器装饰器的概念装饰器的简单使用装饰器的进阶装饰器的练习装饰器的固定模块装饰器的语法糖装饰器的概念
装饰器它不是一个新的知识点,它是有之前我们学习的名称空间、函数嵌套、闭包函数等知识点汇总而来器:工具装饰:为其他事物添加功能装饰器:不修该装饰的源代码的情况下,不改变源代码的调用的前提下,对装饰对象进行功能的增加。核心思想开放封闭原则:开发:对扩展功能的开放,在源代码不改变的情况下,进行功能的添加封闭:源代码是封闭的
import time#内置时间模块def inside(group,s):    print("欢迎来到英雄联盟")    print(f"你所在的是{group}方阵营")    print(f"敌军还要{s}秒到达战场")    time.sleep(s)#设置时间间隔    print("全军出击")inside("红色",30)#tine.time()时间搓从1970年开始方案1#没有修改调用方式,倒是修改了源代码import time#内置时间模块def inside(group,s):    stm_time=time.time()    print("欢迎来到英雄联盟")    print(f"你所在的是{group}方阵营")    print(f"敌军还要{s}秒到达战场")    time.sleep(s)    print("全军出击")    end_time=time.time()    print(end_time-stm_time)inside("红色",30)
装饰器的简单使用
方案二代码冗余import timedef inside(group,s):    print("欢迎来到英雄联盟")    print(f"你所在的是{group}方阵营")    print(f"敌军还要{s}秒到达战场")    time.sleep(s)    print("全军出击")   stm_time=time.time()inside("红色",30)end_time=time.time()print(end_time - stm_time)
方案三调用方式被修改import timedef inside(group,s):    print("欢迎来到英雄联盟")    print(f"你所在的是{group}方阵营")    print(f"敌军还要{s}秒到达战场")    time.sleep(s)    print("全军出击")def worap():    stm_time=time.time()    inside("红色",30)    end_time=time.time()    print(end_time - stm_time)worap()
方案四import timedef inside(group,s):    print("欢迎来到英雄联盟")    print(f"你所在的是{group}方阵营")    print(f"敌军还要{s}秒到达战场")    time.sleep(s)    print("全军出击")def worap(*args,**kwargs):    stm_time=time.time()    inside(*args,**kwargs)    end_time=time.time()    print(end_time - stm_time)worap("蓝色",30)
方案五import timedef inside(group,s):    print("欢迎来到英雄联盟")    print(f"你所在的是{group}方阵营")    print(f"敌军还要{s}秒到达战场")    time.sleep(s)    print("全军出击")def  ouct(func):    # func=inside    def worap(*args,**kwargs):        stm_time=time.time()        func(*args,**kwargs)        end_time=time.time()        print(end_time - stm_time)    return worapres=ouct(inside)res("蓝色",10)
装饰器的进阶
方案六import timedef inside(group,s):    print("欢迎来到英雄联盟")    print(f"你所在的是{group}方阵营")    print(f"敌军还要{s}秒到达战场")    time.sleep(s)    print("全军出击")def  ouct(func):    # func=inside    def worap(*args,**kwargs):        stm_time=time.time()        func(*args,**kwargs)        end_time=time.time()        print(end_time - stm_time)    return worapinside=ouct(inside)inside("蓝色",10)
方案七添加一个充电功能import timedef inside(group,s):    print("欢迎来到英雄联盟")    print(f"你所在的是{group}方阵营")    print(f"敌军还要{s}秒到达战场")    time.sleep(s)    print("全军出击")def recharn(num):    for i in range(num,101):        time.sleep(0.05)        print(f"\r当前电量{"‖"*i}{i}%",end="")    print("电量已充满。")def  ouct(func):    # func=inside    def worap(*args,**kwargs):        stm_time=time.time()        func(*args,**kwargs)        end_time=time.time()        print(end_time - stm_time)    return worapinside=ouct(inside)inside("蓝色",10)recharn=ouct(recharn)recharn(20)
方案八import timedef inside(group,s):    print("欢迎来到英雄联盟")    print(f"你所在的是{group}方阵营")    print(f"敌军还要{s}秒到达战场")    time.sleep(s)    print("全军出击")def recharn(num):    for i in range(num,101):        time.sleep(0.05)        print(f"\r当前电量{"‖"*i}{i}%",end="")    print("电量已充满。")def  ouct(func):    # func=inside    def worap(*args,**kwargs):        stm_time=time.time()        res=func(*args,**kwargs)        end_time=time.time()        print(end_time - stm_time)        return res    return woraprecharn=ouct(recharn)recharn(20)
装饰器的语法糖
方案九import timedef  ouct(func):    # func=inside    def worap(*args,**kwargs):        stm_time=time.time()        res=func(*args,**kwargs)        end_time=time.time()        print(end_time - stm_time)        return res    return worap@ouctdef inside(group,s):    print("欢迎来到英雄联盟")    print(f"你所在的是{group}方阵营")    print(f"敌军还要{s}秒到达战场")    time.sleep(s)    print("全军出击")@ouctdef recharn(num):    for i in range(num,101):        time.sleep(0.05)        print(f"\r当前电量{"‖"*i}{i}%",end="")    print("电量已充满。")recharn(20)inside("红色",10)
装饰器的固定模块
def oute(funs):    def waropper(*arges,**kwargs):        res=funs(*arges,**kwargs)        return res    return waropper# 时间差模块import timedef oute_time(funs):    def waropper(*arges,**kwargs):        cmd_time=time.time()        res=funs(*arges,**kwargs)        out_time=time.time()        print(out_time-cmd_time)        return res    return waropper@oute_timedef home():    time.sleep(2)    print("estdsfs")

标签: