python 进阶学习之python装饰器小结


Posted in Python onSeptember 04, 2021

装饰器总结

什么是装饰器?处理函数的函数,加一个功能,但是不影响原来函数的内部结构生活中的例子:给手机加一个外壳,外壳保护了手机

装饰器有什么用?增强函数的功能

装饰器使用场景增加被装饰函数的行为代码复用

一个函数接收另一个函数作为参数,这种函数称之为高阶函数。

函数的重要特性

1.在python中,一切皆为对象,所以函数也是一个对象,从而函数可以赋值给变量。

定义一个add函数,函数的功能是实现两个数相加

python 进阶学习之python装饰器小结

系统为函数分配了一个内存地址:0x00000000021B3798

python 进阶学习之python装饰器小结

2.一个函数可以作为另一个函数的返回值

python 进阶学习之python装饰器小结

3.一个函数可以嵌套定义在另一个函数中

python 进阶学习之python装饰器小结

python 进阶学习之python装饰器小结

4.一个函数可以作为另一个函数的实参。

先来了解一下map函数
map函数是根据指定函数对指定序列做映射,可以有效提高程序运行效率。

看一下map函数的源码:map(func, *iterables)

map函数接受两个参数:

func:指定函数函数
iterables:可迭代对象,一个序列或者多个序列,即函数对应的实参

python 进阶学习之python装饰器小结

python 进阶学习之python装饰器小结

装饰器

想要实现一个功能,在不改变 test 函数内部结构的前提下,在前面加一句 “少壮不努力”

python 进阶学习之python装饰器小结

弄清楚了装饰器的工作原理:

  • 写一个高阶函数,即参数是函数,返回的也是函数;上面的例子,传函数 test 作为实参,最后返回函数 test ;
  • 在利用语法糖@,简化赋值操作;

但这样的代码是有缺陷:test 函数直接返回了函数名,这样后面就不好调用了。

改 进:

 

python 进阶学习之python装饰器小结

python 进阶学习之python装饰器小结

到此这篇关于python 进阶学习之python装饰器小结的文章就介绍到这了,更多相关python 装饰器内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python多线程编程简单介绍
Apr 13 Python
日常整理python执行系统命令的常见方法(全)
Oct 22 Python
利用Python命令行传递实例化对象的方法
Nov 02 Python
Python实现输出程序执行进度百分比的方法
Sep 16 Python
python多进程实现进程间通信实例
Nov 24 Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
Jan 24 Python
python画图--输出指定像素点的颜色值方法
Jul 03 Python
应用OpenCV和Python进行SIFT算法的实现详解
Aug 21 Python
python 实现目录复制的三种小结
Dec 04 Python
Python代码一键转Jar包及Java调用Python新姿势
Mar 10 Python
python实现无边框进度条的实例代码
Dec 30 Python
Python项目实战之使用Django框架实现支付宝付款功能
Feb 23 Python
自动在Windows中运行Python脚本并定时触发功能实现
Sep 04 #Python
关于python爬虫应用urllib库作用分析
解决pycharm下载库时出现Failed to install package的问题
关于python类SortedList详解
Sep 04 #Python
Python3.8官网文档之类的基础语法阅读
Sep 04 #Python
python实现Nao机器人的单目测距
Sep 04 #Python
python读取mnist数据集方法案例详解
Sep 04 #Python
You might like
BBS(php & mysql)完整版(二)
2006/10/09 PHP
php中常见的sql攻击正则表达式汇总
2014/11/06 PHP
QQ登录简单实现代码
2021/03/09 Javascript
调试Javascript代码(浏览器F12及VS中debugger关键字)
2013/01/25 Javascript
jquery ajax实现下拉框三级无刷新联动,且保存保持选中值状态
2013/10/29 Javascript
jquery分页插件jpaginate在IE中不兼容问题
2014/04/22 Javascript
javascript创建含数字字母的随机字符串方法总结
2016/08/01 Javascript
Vue.js组件tree实现无限级树形菜单
2016/12/02 Javascript
浅析JavaScript中var that=this
2017/02/17 Javascript
深入理解 JavaScript 中的 JSON
2017/04/06 Javascript
angular过滤器实现排序功能
2017/06/27 Javascript
layui中layer前端组件实现图片显示功能的方法分析
2017/10/13 Javascript
详解基于vue-cli优化的webpack配置
2017/11/06 Javascript
微信、QQ、微博、Safari中使用js唤起App
2018/01/24 Javascript
Vue.js数字输入框组件使用方法详解
2019/10/19 Javascript
ElementUI多个子组件表单的校验管理实现
2019/11/07 Javascript
小程序实现图片移动缩放效果
2020/05/26 Javascript
Vue解决echart在element的tab切换时显示不正确问题
2020/08/03 Javascript
[02:57]2014DOTA2国际邀请赛-观众采访
2014/07/19 DOTA
[01:32]DOTA2次级联赛——首支职业女子战队选拔赛全记录
2014/10/23 DOTA
使用python Django做网页
2013/11/04 Python
python实现简单socket通信的方法
2016/04/19 Python
用tensorflow实现弹性网络回归算法
2018/01/09 Python
Python对数据进行插值和下采样的方法
2018/07/03 Python
pyqt5实现按钮添加背景图片以及背景图片的切换方法
2019/06/13 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
Pycharm和Idea支持的vim插件的方法
2020/02/21 Python
使用HTML5进行SVG矢量图形绘制的入门教程
2016/02/19 HTML / CSS
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
幼儿园实习自我鉴定
2013/12/15 职场文书
小学生开学第一课活动方案
2014/03/27 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
个人优缺点总结
2015/02/28 职场文书
婚宴新娘致辞
2015/07/28 职场文书
Windows Server 2019 配置远程控制以及管理方法
2022/04/28 Servers
Hive HQL支持2种查询语句风格
2022/06/25 数据库