Python初步了解装饰器

这篇具有很好参考价值的文章主要介绍了Python初步了解装饰器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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 time
def 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 time
def 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 time
def 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 time
def 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 worap
res=ouct(inside)
res('蓝色',10)




装饰器的进阶

方案六
import time
def 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 worap
inside=ouct(inside)
inside('蓝色',10)

方案七
添加一个充电功能
import time
def 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 worap
inside=ouct(inside)
inside('蓝色',10)
recharn=ouct(recharn)
recharn(20)
方案八
import time
def 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 worap
recharn=ouct(recharn)
recharn(20)

装饰器的语法糖

方案九
import time
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 worap
@ouct
def inside(group,s):

    print('欢迎来到英雄联盟')
    print(f'你所在的是{group}方阵营')

    print(f'敌军还要{s}秒到达战场')
    time.sleep(s)
    print('全军出击')
@ouct
def 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 time
def 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_time
def home():
    time.sleep(2)
    print('estdsfs')

文章来源地址https://www.toymoban.com/news/detail-700688.html

到了这里,关于Python初步了解装饰器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch初步了解学习记录

    目录 前言 一、ElasticSearch是什么? 二、使用步骤(python版) 1.引入包 2.连接数据库 3.创建索引 4.写入数据 5.查询数据 三、相关工具介绍 1.ES浏览器插件 总结 随着数据量的不断增加,传统的查询检索在速度上遇到了瓶颈,这个时候就需要一个更具性能的技术来支持大数据量的

    2024年04月16日
    浏览(37)
  • 初步了解c语言(二)

    注: 此篇文章仅限 初步了解, 本小白后续会持续进行详解。   我们通过加法来理解它的使用。 📙一些简单解释: 1.scanf和printf是库函数,即c语言的编译器提供的 现有 并可以 直接使用 的函数函数,在使用这两个库函数时,需要包含头文件stdio.h 2.scanf函数的作用: 输入数

    2024年02月01日
    浏览(56)
  • Fuzz初步了解

    模糊测试 - 维基百科,自由的百科全书 (wikipedia.org) 模糊测试 (fuzz testing, fuzzing)是一种软件测试技术。其核心思想是自动或半自动的生成随机数据输入到一个程序中,并监视程序异常,如崩溃,断言(assertion)失败,以发现可能的程序错误,比如内存泄漏 模糊测试工具主要分

    2024年02月11日
    浏览(34)
  • 接口测试初步了解以及实战

    接口测试定义 :测试系统 组件间 接口 接口测试应用 :测试 外部系统与系统之间 的交互、系统 内部子系统之间 的交互 接口测试类型 :功能测试、逻辑业务测试、异常测试、性能测试、安全性测试 接口测试类型具体介绍 : 1.1功能测试:      定义:1、接口功能正确实现

    2023年04月23日
    浏览(34)
  • 01spring初步了解

    📖 博主介绍 个人主页: Zinksl 编程社区: Zinksl编程酒馆 个人格言: 想法落实的最佳时机就是现在!🏄 如果你 喜欢交流 或 热爱分享 , 欢迎加入 编程社区 或 交流群 大家一起学习技术,交流心得,共同进步🚅 思维导图 利用思维导图从整体了解内容 1 IoC(Inversion of Contro

    2023年04月20日
    浏览(39)
  • HCIA初步了解

    HCIA的全称为Huawei Certified ICT Associate,意思是华为认证ICT工程师,是华为公司打造的世界唯一覆盖ICT全技术领域的认证体系中的初级认证,表示通过认证的人员具备安装、配置、运行ICT设备,并进行故障排除的能力。 1、网络         网络连接设备——路由器、交换机   

    2024年02月04日
    浏览(32)
  • 初步了解c语言(一)

    注意: 此部分为初步了解! C语言是一门通用 计算机编程语言 ,广泛应用于 底层开发 。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。 📙计算机编程语言:   人和计算机交流的语

    2023年04月18日
    浏览(33)
  • 【数据结构】初步了解排序

      Yan-英杰的主页 悟已往之不谏 知来者之可追    C++程序员,2024届电子信息研究生 目录 1.排序的概念及其运用         1.1排序的概念           2.常见排序算法的实现         2.1插入排序         2.2希尔排序                问题:gap是多少合适?        

    2024年02月11日
    浏览(41)
  • 初步了解SpringCloud微服务架构

    ✅作者简介:大家好,我是Cisyam,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Cisyam-Shark的博客 💞当前专栏: 微服务探索之旅 ✨特色专栏: MySQL学习 🥭本文内容:初步了解SpringCloud微服务架构 🖥️个人小站 :个人博客,欢迎大家访问 📚个人

    2024年02月08日
    浏览(44)
  • Flink异步IO初步了解

            之前使用Flink查询Redis数据的过程中,由于对数据一致性的要求并不是很高,当时是用MapFunction +  State 的方案。先缓存一大堆数据到State中,达到一定数量之后,将批量Key提交到Redis中进行查询。         由于Redis性能极高,所以并没有出现什么问题,后来了解到了

    2024年02月03日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包