python装饰器

刚刚接触python的装饰器,简直懵逼了,直接不懂什么意思啊有木有,自己都忘了走了多少遍Debug,查了多少遍资料,才有点点开始明白了。

学习python中有什么不懂的地方,小编这里推荐加小编的python学习群:895,817, 687
有任何不懂的都可以在里面交流,还有很好的视频教程pdf学习资料,大家一起学习交流!

待会我将会和大家一起通过代码的形式来迷你银行存款取款的功能,然后通过引入装饰器来一步一步优化代码。

废话不多说梦开始撸代码。我们去ATM存款取款的过程用代码来表示大概如下(不大准确,仅仅是为了掩饰需要)

上面是按下按钮1就存款,否则则取款。

不对,存取款要输入密码啊!!!所以,我们要加密码验证代码。
可以看到,虽然实现了密码验证功能,但是代码冗余度比较高,而且现在只模拟了取款和存款功能,然而还有查询功能,转账功能等等,那么冗余度就更高了,而且相对于取款和存款函数来说,复用性没有那么高,所以我们要进一步优化代码,把验证函数写到取款和存款函数内部。

有没有什么方法,可以在不改变原函数以及原函数的调用的情况下扩展原函数的功能呢?当然是有的,这就是python中著名的装饰器。还是使用上面的代码来演示
从现在开始,上面红框的代码不再进行更改,打死也不改,我们来实现有密码验证的存取款功能。

装饰器装饰有参函数

看下面这段代码

大家看看这段代码有没有什么问题?

运行结果
为了使装饰器能够装饰更多函数,我们进一步优化代码。


装饰器装饰有返回值函数
如图可以看到,无论被装饰的函数有无返回值,其结果都无返回值,原因其实很简单,因为inner()函数根本就没有返回值。为了实现有返回值的函数被装饰之后仍然有返回值,需要inner函数与被装饰函数的返回值保持一致。

可以看到,有返回值的函数被装饰之后依然有返回值,没有返回值的函数被装饰之后则没有返回值,符合我们想要的结果。

双重语法糖

为了更加直观地演示双重语法糖,我就不再使用上面的例子了。

我先来定义一个函数

现在我有一个需求,我想在’python小白联盟’的上面打印一行’=‘和一行’’,也就是要实现这种效果。

那么应该怎么写呢?大家可能都会想到语法糖的叠加,那叠加的方式是以下哪一种呢?


我们来运行一下就知道了
可以看到,叠加的方式应该是
**种,也就是说最外层的语法糖先执行。

带参数的语法糖

为了演示带参数的语法糖,我再把上面的一张图搬下来

显然,红框部分的代码冗余度比较高,我们可以使用带参的语法糖来进行简化

装饰器就讲到这里,祝大家有个愉快的一天!

这是我见过最全面的Python装饰器详解!没有学不会这种说法相关推荐

  1. 这是我见过最全面的Python装饰器详解 没有学不会这种说法

    python装饰器 刚刚接触python的装饰器,简直懵逼了,直接不懂什么意思啊有木有,自己都忘了走了多少遍Debug,查了多少遍资料,才有点点开始明白了. 待会我将会和大家一起通过代码的形式来迷你银 ...

  2. python装饰器作用和功能_这是我见过最全面的Python装饰器详解!没有学不会这种说法!...

    今天的任务比较繁重,因为我们要一起来学习Python中比较重要比较牛逼比较难的装饰器. 我将会和大家一起通过代码的形式来迷你银行存款取款的功能,然后通过引入装饰器来一步一步优化代码. 废话不多说梦开始 ...

  3. python装饰器详解-这是我见过最全面的Python装饰器详解!没有学不会这种说法!...

    今天的任务比较繁重,因为我们要一起来学习Python中比较重要比较牛逼比较难的装饰器. 我将会和大家一起通过代码的形式来迷你银行存款取款的功能,然后通过引入装饰器来一步一步优化代码. 废话不多说梦开始 ...

  4. python中的类装饰器应用场景_这是我见过最全面的Python装饰器教程了!

    装饰器(Decorators)是 Python 的一个重要部分.简单地说:他们是修改其他函数的功能的函数.他们有助于让我们的代码更简短,也更Pythonic(Python范儿).在程序开发中经常使用到 ...

  5. Python 装饰器详解(下)

    Python 装饰器详解(下) 转自:https://blog.csdn.net/qq_27825451/article/details/84627016,博主仅对其中 demo 实现中不适合pyth ...

  6. Python 装饰器详解(中)

    Python 装饰器详解(中) 转自:https://blog.csdn.net/qq_27825451/article/details/84581272,博主仅对其中 demo 实现中不适合pyth ...

  7. Python 装饰器详解(上)

    Python 装饰器详解(上) 转自:https://blog.csdn.net/qq_27825451/article/details/84396970,博主仅对其中 demo 实现中不适合pyth ...

  8. python类装饰器详解-Python 装饰器详解

    开放封闭原则: 开放对扩展 封闭修改源代码 改变了人家调用方式 装饰器结构 """ 默认结构为三层!!!每层返回下一层内存地址就可以进行执行函数, 传参:语法糖中的传参可 ...

  9. python装饰器详解51-python装饰器使用实例详解

    这篇文章主要介绍了python装饰器使用实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 python装饰器的作用就是在不想改变原函数代码的情 ...

最新文章

  1. 我在兰亭这三年之开展自动化
  2. clion phpstorm 等jetbrains编辑器激活教程
  3. SVN 如何提交 SO 库文件
  4. 知识点025-服务器的基础优化脚本
  5. 机票垂直搜索引擎的性能优化
  6. 【C语言进阶深度学习记录】六 C语言中的分支语句
  7. 字节跳动AI Lab 算法岗专属内推码!
  8. Python使用-错误“name ‘requests‘ is not defined”的探查
  9. 透明背景favicon.ico图标的制作方法
  10. 对指定网站渗透的一些总结
  11. 亚马逊云计算平台---------AWS(一)
  12. 有一群海盗(不多于20人),在船上比拼酒量。
  13. Mac自带FTP工具用法
  14. Android6.0运行时权限处理
  15. python+图书管理系统
  16. 梦幻西游藏宝阁不显示服务器,梦幻西游玩转藏宝阁 全服搜索功能体验 17173.com网络游戏:《梦幻西游》专区...
  17. 魏文王问扁鹊的注释_扁鹊见魏文王是怎么回事 魏文王问扁鹊的典故故事
  18. 移动端IM开发者必读(二):史上最全移动弱网络优化方法总结
  19. 3.python数据分析处理库pandas(学习笔记)
  20. java从ftp上下载图片到客户端本地

热门文章

  1. ClickHouse【环境搭建 01】Linux环境单机版在线安装 Code:210.DB::NetException + Init script is already running 问题处理
  2. Shrio 自定义算法登录认证
  3. LeetCode 12 整数转罗马数字
  4. Visual C++——无法响应WM_LBUTTONDBLCLK消息(鼠标左键双击)问题解决方案
  5. Spring Boot——[Spring Boot Configuration Annotation Processor not found in classpath]解决方案
  6. 多人互砍游戏的后台服务器的多线程架构
  7. XCode 4.2(4.1)真机调试及生成IPA全攻略
  8. spring定时任务时间格式cronExpression设置
  9. 2021暑假实习-SSM超市积分管理系统-day10笔记
  10. Android vector Path Data画图详解