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

Python装饰器根本写法

  • 将上述流程进行了包装,就是装饰器
def outer(origin):
    def inner():
        # add code
        res = origin()
        # add code
        return res
    return inner

@outer
def func():
    # code here
    print("func")
    return
  • 被包装的函数的没有参数,可以轻松完成代码,如果有参数,如何处理
def outer(origin):
    def inner(*args, **kwargs):
        # add code
        res = origin(*args, **kwargs)
        # add code
        return res
    return inner

@outer
def func():
    # code here
    print("func")
    return
func(123)
func(123, 456)
func(a = 5, b = 7)
  • 装饰器是基于@语法与函数闭包来实现的效果
  • 经过装饰器修饰过的函数就不再是原始定义的函数了,但调用时是看不出这种效果,给人一种还是在调用原始函数的效果
http://www.dtcms.com/a/28135.html

相关文章:

  • leetcode_位运算 190.颠倒二进制位
  • 8 SpringBootWeb案例(上): 查询【分页功能(分页插件)】、删除、新增、修改
  • 第三章 组件(6)- 事件处理
  • 设计模式 之 工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)(C++)
  • centos服务器巡检脚本
  • Windows逆向工程入门之字符串类型解析与拓展
  • C语言预处理学习笔记
  • Docker Desktop 入门教学
  • python组备赛笔记(基础篇)
  • 从零到一:构建现代 React 应用的完整指南
  • Netty入门详解
  • halcon机器视觉深度学习对象检测,物体检测
  • 自学FOC系列分享--SVPWM和clark 逆变换及代码实战
  • docker从容器中cp到本地、cp本地到容器
  • LabVIEW开发中的电机控制与相机像素差
  • Visual Studio中打开多个项目
  • 【微中子代理踩坑-前端node-sass安装失败】
  • 敏捷开发07:敏捷项目可视化管理-ScrumBoard(Scrum板)使用介绍
  • rust 实例化动态对象
  • IC卡、M1卡及各类卡的原理使用说明
  • 以太网的MAC(介质访问控制)详解
  • 前端知识点---vue的声明周期(vue)
  • RAGFLOW使用flask转发的open ai接口
  • C# 十六进制字符串转换为十进制
  • Error [ERR_REQUIRE_ESM]: require() of ES Module
  • 深入了解 DevOps 基础架构:可追溯性的关键作用
  • 深入理解 C++17 中的 std::atomic<T>::is_always_lock_free
  • 全面了解 Stanford NLP:强大自然语言处理工具的使用与案例
  • 在mfc中使用自定义三维向量类和计算多个三维向量的平均值
  • Alluxio Enterprise AI 3.5 发布,全面提升AI模型训练性能