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

python中的装饰器的真正含义和用法

闭包:

闭包是python中的一个很实用的写法,可以使得用户在函数中调用该函数外的函数的变量,使得该变量常驻于内存中。

闭包函数:

输入是函数,输出也是一个函数。

装饰器的写法是python闭包的语法糖。

面试中经常面试到的调用结果题目:

# ---encoding:utf-8---
# @Author  : CBAiotAigc
# @Email   :1050100468@qq.com
# @Site    : 
# @File    : 两个装饰器.py
# @Project : PythonUtils
# @Software: PyCharm
def wrapper1(func):print("set wrapper1")def inner_wrapper1(*args, **kwargs):print("进入inner_wrapper1")ret = func(*args, **kwargs)print("离开inner_wrapper1")return retreturn inner_wrapper1def wrapper2(func):print("set wrapper2")def inner_wrapper2(*args, **kwargs):print("进入inner_wrapper2")ret = func(*args, **kwargs)print("离开inner_wrapper2")return retreturn inner_wrapper2@wrapper1
@wrapper2
def func():print("func 函数调用")if __name__ == '__main__':func()

装饰器在第一次调用被装饰函数时进行增强

  • 增强时机? 在第一次调用之前
  • 增强次数?只增强一次

上面代码的调用逻辑分析:

func = wrapper2(func)
func = wrapper1(func)func()

http://www.lryc.cn/news/112778.html

相关文章:

  • opencv基础-38 形态学操作-闭运算(先膨胀,后腐蚀)cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
  • RocketMQ生产者和消费者都开启Message Trace后,Consume Message Trace没有消费轨迹
  • JDV背后的技术-助力618 | 京东云技术团队
  • 0基础学习VR全景平台篇 第78篇:全景相机-拍摄VR全景
  • Spring MVC简介与概述
  • java基础复习(第六日)
  • 商用服务机器人公司【Richtech Robotics】申请纳斯达克IPO上市
  • 关于nn.Embedding如何使用预定义词表
  • 怎么设置文件夹密码?文件夹密码设置方法合集
  • PEMFC氢氧质子交换燃料电池MATLAB仿真模型
  • 创建PVC注意事项
  • Sencha Ext.NET Crack 快速应用程序的正确工具集
  • transformer学习
  • 基于LNMP架构搭建Discuz论坛
  • 乐鑫科技2021笔试题
  • VL 模型 Open-Set Domain Adaptation with Visual-Language Foundation Models 论文阅读笔记
  • 在IDEA同一个窗口中同时打开多个独立项目
  • flask-session、数据库连接池
  • 基于EEGLAB的ICA分析
  • Pytorch深度学习-----神经网络之线性层用法
  • 代码随想录算法训练营day58
  • Grafana集成prometheus(4.Grafana添加预警)
  • 宏观上看Spring创建对象的过程
  • Jtti:linux如何配置dns域名解析服务器
  • 上网速度慢解决方案
  • 解决 “fatal: Could not read from remote repository.
  • TypeScript知识点总结
  • Map简单介绍
  • Linux文本处理工具和正则表达式
  • 【WebRTC---源码篇】(二十三)JitterBuffer