当前位置: 首页 > article >正文

30.装饰器

装饰器也是一种闭包。在闭包函数内调用目标函数

功能是不破坏目标函数原有的代码和功能的前提下,为目标函数增加新功能。

方式一:通过闭包的方式调用

def outer(func):

    def inner():
        print("睡觉了....")
        func()
        print("醒来了...")
    return inner


def sleep():
    import time
    import random
    num = random.randint(1, 5)
    time.sleep(num)


func = outer(sleep)
func()

方式二:使用注解的方式调用

def outer(func):

    def inner():
        print("睡觉了....")
        func()
        print("醒来了...")
    return inner


@outer
def sleep():
    import time
    import random
    num = random.randint(1, 5)
    time.sleep(num)


sleep()


http://www.kler.cn/a/446660.html

相关文章:

  • Nginx的stream模块代理四层协议TCP的流量转发
  • Golong中无缓冲的 channel 和 有缓冲的 channel 的区别
  • Hutool工具包的常用工具类的使用介绍
  • 使用 datamodel-code-generator 从 MySQL 生成 Python 模型
  • Docker:Dockerfile(补充四)
  • JS信息收集(小迪网络安全笔记~
  • 【Ubuntu】安装QQ
  • Apache SeaTunnel 增强对csv读取时分割字段的能力
  • 【论文笔记】欧美学术论文写作习惯解析:非母语作者的指南
  • 仓鼠身长能长到多少厘米?
  • 《第十二部分》1.STM32之RTC实时时钟介绍---BKP实验
  • 期权懂|2024年12月国内最新期权开通期权条件有什么?
  • 订单超时自动取消的7种方案
  • 深入理解YOLO系列目标检测头的设定方式
  • 如何有效划分服务器磁盘空间?具体的步骤和流程
  • 本地摄像头视频流在html中打开
  • 【机器学习】以机器学习为翼,翱翔网络安全创新苍穹
  • 汽车IVI中控开发入门及进阶(43):NanoVG
  • 打造智慧医院挂号枢纽:SSM 与 Vue 融合的系统设计与实施
  • 【单片机原理】第1章 微机基础知识,运算器,控制器,寄存器,微机工作过程,数制转换
  • HuggingFace datasets - 下载数据
  • C语言数据库管理系统示例:文件操作、内存管理、错误处理与动态数据库设计 栈和堆的内存分配
  • [c++进阶(二)] 智能指针详细剖析--RAII思想
  • 在 .NET 5.0 运行 .NET 8.0 教程:使用 ASP.NET Core 创建 Web API
  • python 模拟法
  • 学技术学英文:SpringBoot的内置监控组件-Spring Boot Actuator