学习Python装饰器,看这一篇文章就够了

讲 Python 装饰器前,我想先举个例子,虽有点污,但跟装饰器这个话题很贴切。

谈装饰器前,还要先要明白一件事,Python 中的函数和 Java、C++不太一样,Python 中的函数可以像普通变量一样当做参数传递给另外一个函数,例如:

先来看一个简单例子,虽然实际代码可能比这复杂很多:

说到这里。顺便提醒下大家不管你是为了Python就业还是兴趣爱好,记住:项目开发经验永远是核心,如果你缺新项目练习或者没有python精讲教程,可以去小编的Python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,里面很多新教程项目,还可以跟老司机交流讨教!
现在有一个新的需求,希望可以记录下函数的执行日志,于是在代码中添加日志代码:

简单装饰器

@ 语法糖

*args、**kwargs可能有人问,如果我的业务逻辑函数 foo 需要参数怎么办?比如:

我们可以在定义 wrapper 函数的时候指定参数:

比如:

这时,你就可以把 wrapper 函数指定关键字函数:

带参数的装饰器

@use_logging(level="warn")等价于@decorator

类装饰器

functools.wraps

例子:

装饰器顺序一个函数还可以同时定义多个装饰器,比如:

总结:不管你是为了Python就业还是兴趣爱好,记住:项目开发经验永远是核心,如果你缺新项目练习或者没有python精讲教程,可以去小编的Python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,里面很多新教程项目,还可以跟老司机交流讨教!

本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

原文地址:https://www.cnblogs.com/chengxuyuanaa/p/12581329.html

时间: 2024-10-06 20:47:45

学习Python装饰器,看这一篇文章就够了的相关文章

理解 Python 装饰器看这一篇就够了

讲 Python 装饰器前,我想先举个例子,虽有点污,但跟装饰器这个话题很贴切. 每个人都有的内裤主要功能是用来遮羞,但是到了冬天它没法为我们防风御寒,咋办?我们想到的一个办法就是把内裤改造一下,让它变得更厚更长,这样一来,它不仅有遮羞功能,还能提供保暖,不过有个问题,这个内裤被我们改造成了长裤后,虽然还有遮羞功能,但本质上它不再是一条真正的内裤了.于是聪明的人们发明长裤,在不影响内裤的前提下,直接把长裤套在了内裤外面,这样内裤还是内裤,有了长裤后宝宝再也不冷了.装饰器就像我们这里说的长裤,在不

【转】九步学习python装饰器

本篇日志来自:http://www.cnblogs.com/rhcad/archive/2011/12/21/2295507.html 纯转,只字未改.只是为了学习一下装饰器.其实现在也是没有太看明白,对于装饰器我就是用的时候找例子,能蒙对,但是用过之后一段时间就忘了.还是用的少.有空应该好好看一看的,包括闭包.对于各种现代编程语言来说闭包都是很重要的.在这里先谢过原作者,如有侵权请告知. =-=-=-=-=-=-=-=-=-=-一条不怎么华丽的分隔线-=-=-=-=-=-=-=-=-=-= 这

如何进行云主机迁移?看这一篇文章就够了!

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯云计算产品团队发表于云+社区专栏 主机迁移概述 在云计算时代,不管是从IDC上云还是多云直接的迁移,都已经是常见的事宜.而在上云/迁移的方案中,也是有多种的方式能够将主机迁移到腾讯云中. 然而,不同的方式会有不同的利弊. 目前,腾讯云可以提供导入镜像和服务迁移(冷迁移)的工具,而这两种方式均涉及到镜像制作.故本文将分享镜像制作的操作步骤,仅供参考. 1.在制作镜像之前需要了解符合导入腾讯云的镜像文件要求,详情可参考导入镜像概述

100JAVA设计模式看着一篇文章就够了!

学JAVA设计模式,会遇到一下几个难题: 1.记不住 a.记不住7大原则,23种设计模式! b.不能复述设计模式代码,UML图! 2.看不懂 a.看不懂代码演示! b.看不懂高手代码! c,看不懂框架代码! 3.不会用 业务逻辑处理怎么用? 业务变更怎么用? 业务扩展怎么用? 4.带你看懂Spring源码中各种设计模式,充分理解架构设计中大师如何构建高扩展系统! 原文地址:https://www.cnblogs.com/gcq243627152qq/p/12003808.html

遥想大肠包小肠----python装饰器乱弹

说起装饰器就tm蛋疼,在老男孩学习python装饰器,结果第二天默写,全错了,一道题抄十遍,共计二十遍. 要是装饰器是一人,我非要约他在必图拳馆来一场...... 下面容我展示一下默写二十遍的成果 语法形式 def  mydec(wenwa): def inner(*args,**kwagrs): ret = wenwa(*args,**kwargs) return ret  #请务必别忘记这还有个该死的return,如果被执行的函数没有返回值return,则ret为None return in

六、PYTHON 学习之装饰器使用

Python是一种强大的语言,即可浅尝辄止,也可深入挖掘.很适合做科学计算.数据挖掘等等.今天我将简单介绍一下Python的装饰器(Decorators)的用法 . 假设我们想要庆祝下生日,需要邀请一些朋友过来参加.但是你有个讨厌的朋友,叫Joe,必须不能让他来啊.可能首先你想到的是建一个list,然后迭代查找并移除所有的Joe童鞋.这当然是个好方法,但是这里为了介绍装饰器,我们会用@来完成这个工作.虽然可能看起来没有什么必要,但是有助于大家学习装饰器的用法. 首先创建一个Python文件app

[转载]Python装饰器学习(九步入门)

本文转载于: http://www.cnblogs.com/rhcad/archive/2011/12/21/2295507.html 第一步:最简单的函数,准备附加额外功能 # -*- coding:gbk -*- '''示例1: 最简单的函数,表示调用了两次''' def myfunc(): print("myfunc() called.") myfunc() myfunc() 第二步:使用装饰函数在函数执行前和执行后分别附加额外功能 # -*- coding:gbk -*- ''

Python装饰器的学习笔记(转载)

Python装饰器的学习笔记 2017-05-18 程序员共读 来自:标点符的<Python装饰器的学习笔记> 链接:http://www.biaodianfu.com/python-decorator.html 原文:http://stackoverflow.com/questions/739654/how-to-make-a-chain-of-function-decorators-in-python#answer-1594484 装饰器(decorator)是一种高级Python语法.可

Python装饰器学习

Python装饰器学习(九步入门) 这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方式. 第一步:最简单的函数,准备附加额外功能 ? 1 2 3 4 5 6 7 8 # -*- coding:gbk -*- '''示例1: 最简单的函数,表示调用了两次''' def myfunc():     print("myfunc() called.") myfunc() myfunc() 第二步:使用装饰函数在函数执行前和执行后分别附加额外功能 ? 1 2 3 4 5 6