Python装饰器实例讲解(一)
1|0Python装饰器实例讲解(一)
多种角度讲述这个知识,这是个系列文章
但前后未必有一定的顺承关系
部分参考网络
本文以一个小案例引出装饰器的一些特点,不涉及理论,后面再谈
1|1案例
-
写一个代码来求一个数是否是质数
-
写个代码来计算某个数值范围内有多少个质数
-
换一下,我们不是要学这个,我们要学装饰器
-
你在这里会发现一个潜在的需求,可能不光是你这么一个函数有统计时间的需求,其他函数一样有,但现在这种处理方法可能要在每个目标函数上去加那段时间处理的代码,非常麻烦,那有没有好的做法呢?答案就是装饰器。
1|2装饰器
-
改造(对比下跟之前的区别)
-
获取质数个数函数,不需要统计时间
-
写一个装饰器的函数(不用管为何这么写,以后会详细说明)
-
给要加时间的函数套上这个装饰器
-
再次执行get_prime_nums()效果跟之前是一样的
-
同样的你可以将这个装饰器运用到其他函数上去
-
完了吗,没有。可能性还有很多,主要是被装饰函数的变化导致了装饰器本身要随之适应变化。
1|3装饰器改造一
-
如果被装饰的函数有返回值呢?
-
此时你直接调用函数,而不改造装饰器的话,是无法得到这个数量的
-
改造装饰器
-
如何改造呢?你应该要去理解装饰器的运行原理(没那么复杂,但我们这个课不深入,仅作为案例给你展示)
-
此时你再执行
-
完了吗?还没有,如果我们的被装饰函数有参数呢?
1|4装饰器改造二
-
你的被装饰函数存在参数
-
其实在IDE中get_prime_nums(50000)就会提示你意外实参
-
执行结果
-
这是初学者最困惑的地方了,等我们讲了原理(或者说诀窍)你应该就非常清楚为何会这样报错了
-
怎么修改呢?
-
再次执行,就ok了
-
但是要注意,这样的话,如果你的被装饰函数是之前的没有参数的情况,是会报错的
-
报错
-
但由于是*args,你改成多个参数倒是可以的
-
如果你这样调用
-
报错
-
可以这样修改你的装饰器
1|5说在最后
- 这个案例是入门的,讲解了装饰器的一些简单使用
- 但,留了一些坑,你可能未必知道为何要这么修改,装饰器是怎么调度的等等
- 且听下回分解
__EOF__

本文作者:博客已废弃
本文链接:https://www.cnblogs.com/wuxianfeng023/p/17104664.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/wuxianfeng023/p/17104664.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)