Python小知识 - Python装饰器

news2024/11/29 2:28:38

Python装饰器

在Python中,装饰器是一个特殊的函数,可以将其他函数包装在装饰器函数中,并且将被包装的函数作为参数传递给装饰器函数。

使用装饰器的好处是可以自动在被包装的函数前后执行一些额外的代码,比如在函数执行前后打印日志,或者在函数执行前后计算函数执行时间等。

下面我们通过一个简单的例子来学习如何使用装饰器。

假设我们要对一个函数进行包装,在函数执行前后分别打印一个日志。

下面是我们要包装的函数:

def func():

print("func() is running")

如果我们直接调用这个函数,将打印下面的日志:

func()

func() is running

下面是我们要使用的装饰器函数:

def decorator(func):

def wrapper():

print("wrapper() is running")

func()

print("wrapper() is done")

return wrapper

使用装饰器函数包装我们要调用的函数,只需要在函数名前加上@符号和装饰器函数名,如下所示:

@decorator

def func():

print("func() is running")

调用函数func()将自动执行decorator函数,decorator函数将func函数作为参数传递给wrapper函数,最后将wrapper函数的返回值赋给func函数。

因此,调用func()函数实际上是调用wrapper()函数。

调用wrapper()函数将打印下面的日志:

func()

wrapper() is running

func() is running

wrapper() is done

从打印的日志中可以看出,在func()函数执行前后分别打印了wrapper()函数的日志。

使用装饰器可以在不修改函数的前提下,对函数进行包装,达到额外增加功能的目的。

顺便介绍一下我的另一篇专栏, 《100天精通Python - 快速入门到黑科技》专栏,是由 CSDN 内容合伙人丨全站排名 Top 4 的硬核博主 不吃西红柿 倾力打造。 基础知识篇以理论知识为主,旨在帮助没有语言基础的小伙伴,学习我整理成体系的精华知识,快速入门构建起知识框架;黑科技应用篇以实战为主,包括办公效率小工具、爬虫、数据分析、机器学习、计算机视觉、自然语言处理、数据可视化等等,让你会用一段简单的Python程序,自动化解决工作和生活中的问题,甚至成为红客。

🍅 订阅福利原价299,限时1折订阅专栏进入千人全栈VIP答疑群,作者优先解答机会(代码指导/学习方法指引),群里大佬可以抱团取暖(大厂/外企内推机会)

🍅 订阅福利:简历指导、招聘内推、80G全栈学习视频、300本IT电子书:Python、Java、前端、大数据、数据库、算法、爬虫、数据分析、机器学习、面试题库等等

🍅 专栏地址: 点击《100天精通Python - 快速入门到黑科技》

100天精通Python - 订阅福利

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/987200.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux之防火墙

目录 什么是防火墙 分类: Netfilter(数据包过滤) 防火墙无法完成的任务 iptables 与 firewalld 区别 iptables iptables执行原则 规则链 概念 分析 流程图 规则链分类 iptables 流量处理动作 iptables表 四种规则表 安装iptables 预处理 管理命令 …

SpringBoot整合RabbitMQ图文过程以及RabbitTemplate常用API介绍

🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:Sp…

GUI知识点总结(二)(java)

文章目录 🐒个人主页🏅JavaSE系列专栏📖前言:🦓事件 🏨Adapter 适配器🐕对话框🦍showMessageDialog():消息对话框🦍showConfirmDialog():确认对话…

ChatGPT 插件 “Consensus“ 实现论文搜索功能;数据工程在语言建模中的重要性

🦉 AI新闻 🚀 ChatGPT 插件 “Consensus” 实现论文搜索功能 摘要:OpenAI 推出了一个名为 “Consensus” 的插件,可在 ChatGPT 上进行论文搜索。用户只需用一句话描述自己想了解的问题,插件就能从 2 亿篇论文中搜索并…

Tomcat架构设计源码剖析

Tomcat架构设计&源码剖析 Tomcat 架构设计 Tomcat的功能(需求) 浏览器发给服务端的是一个 HTTP 格式的请求,HTTP 服务器收到这个请求后,需要调用服务端程序来处理,所谓的服务端程序就是你写的 Java 类&#xff…

实现 js 中所有对象的深拷贝(包装对象,Date 对象,正则对象)

通过递归可以简单实现对象的深拷贝,但是这种方法不管是 ES6 还是 ES5 实现,都有同样的缺陷,就是只能实现特定的 object 的深度复制(比如数组和函数),不能实现包装对象 Number,String &#xff0…

如何压缩图片大小?缩小图片体积跟我学

在日常生活中,我们常常需要处理图片,但是由于图片大小过大,常常带来许多不便。那么,如何压缩图片大小呢?下面就为大家介绍三个方法,让你轻松解决这个问题。 一、使用图片编辑软件 市面上有许多图片编辑软件…

使用HTTP代理上网安全吗?

HTTP代理是一种代理服务器,它可以充当客户端和服务器之间的中介,以帮助客户端访问服务器上的资源。虽然使用HTTP代理可以带来一些便利,但是在安全方面也存在一些问题。 HTTP代理的安全问题 窃取用户信息 如果HTTP代理服务器不受信任&#xff…

【计算机网络】https协议

目录 概念的准备 什么是加密 为什么需要加密 常见的加密方式 对称加密 非对称加密 数据摘要(数字指纹) 数字签名 https的工作过程 方案一:只使用对称加密 方案二:只使用非对称加密 方案三:双方都采用非对称加密 方案四&#xff…

【Spring Boot 源码学习】深入 FilteringSpringBootCondition

走近 AutoConfigurationImportFilter 引言往期内容主要内容1. match 方法2. ClassNameFilter 枚举类3. filter 方法 总结 引言 前两篇博文笔者带大家从源码深入了解了 Spring Boot 的自动装配流程,其中自动配置过滤的实现由于篇幅限制,还未深入分析。 …

2023国赛数学建模C题思路模型 - 蔬菜类商品的自动定价与补货决策

# 1 赛题 在生鲜商超中,一般蔬菜类商品的保鲜期都比较短,且品相随销售时间的增加而变差, 大部分品种如当日未售出,隔日就无法再售。因此, 商超通常会根据各商品的历史销售和需 求情况每天进行补货。 由于商超销售的蔬菜…

uniapp使用webview将页面转换成图片支持h5、app、小程序

uniapp使用webview将页面转换成图片支持h5、app、小程序 在uniapp项目中新建主页和webview页面 index.vue代码 <template><view><!-- 微信小程序要设置src为网络路径 --><web-view src"/hybrid/html/webview.html"></web-view><…

十四、内置模块path、邂逅Webpack和打包过程、css-loader

一、内置模块path &#xff08;1&#xff09;path介绍 &#xff08;2&#xff09; path常见的API 这里重点讲一下path.resolve()。 看上面的例子&#xff0c;从右往左开始解析&#xff0c;所以一开始解析的就是 /abc.txt &#xff0c;这个时候就会把它当成一个绝对路径了&am…

C#,数值计算——用于积分函数与方法的Stiel类的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { public class Stiel { public class pp : UniVarRealValueFun, RealValueFun { public Stiel st { get; set; } null; public pp() { } public doubl…

探索数据库管理的利器 - PHPMyAdmin

有一个项目&#xff0c;后端由博主独自负责&#xff0c;最近需要将项目交接给另一位同事。在项目初期&#xff0c;博主直接在数据库中使用工具创建了相关表格&#xff0c;并在完成后利用PhpMyAdmin生成了一份数据字典&#xff0c;供团队使用。然而&#xff0c;在随后的开发过程…

JDK1.8下载、安装和环境配置使用

JDK1.8下载、安装和配置 下载安装包解压文件配置测试安装 下载安装包 链接地址 https://pan.baidu.com/s/1RF7-ulq0_qAelpXskDxdvA 提取码 d1y0解压文件 jdk1.8.0_181 配置 右击我的电脑&#xff0c;选择属性 2.点击高级系统设置 在系统变量区里点击&#xff1a;新建…

听书网站模板源码 懒人书院网站源码 苹果cms手机听书网站模版源码 支持手机端

苹果cms超漂亮UI高仿芒果TV听书网站模板带手机端。 手机版修改logo&#xff0c;ting_wap/images/logo.png 电脑版修改logo&#xff0c;ting_pc/img/logo.png 编辑推荐后台推荐5颗星。 新势力/热播榜单后台推荐9颗星。

3D基础:Y-Up和Z-Up

推荐&#xff1a;用 NSDT编辑器快速搭建可编程3D场景 所有 3D 工具都包含具有 X、Y 和 Z 轴的 3 维环境。 这些工具中的 X 轴方向相同&#xff0c;即使用前视图时从左到右的水平线。 但是&#xff0c;不同的 3D 工具可能具有不同的 Y 轴和 Z 轴方向。 有些3D工具是Y-Up的&…

西门子S7-200 SMART软件的下载安装步骤

文章目录 1、软件下载2、软件安装 1、软件下载 访问西门子官网&#xff1a;https://www.siemens.com/cn/zh.html&#xff0c;进入后在左上角产品与服务&#xff0c;依次进入该目录&#xff1a; 实在找不到在右上角放大镜直接搜索smart200 点击进入即可&#xff0c;然后就进入…

浅谈安科瑞ADL200仪表在爱尔兰工厂的应用

摘要&#xff1a;用户端消耗着整个电网80%的电能&#xff0c;用户端智能化用电管理对用户可靠、安全、节约用电有十分重要的意义。构建智能用电服务体系&#xff0c;推广用户端智能多功能仪表、智能用电管理终端等设备用电管理解决方案&#xff0c;实现电网与用户的双向良性互动…