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脚本将文字转换为图片的实例分享
Aug 29 Python
简析Python的闭包和装饰器
Feb 26 Python
Python中json格式数据的编码与解码方法详解
Jul 01 Python
Django URL传递参数的方法总结
Aug 28 Python
Python中循环引用(import)失败的解决方法
Apr 22 Python
Python代码实现删除一个list里面重复元素的方法
Apr 02 Python
Python实现制度转换(货币,温度,长度)
Jul 14 Python
windows下Python安装、使用教程和Notepad++的使用教程
Oct 06 Python
Python使用贪婪算法解决问题
Oct 22 Python
通过实例简单了解Python中yield的作用
Dec 11 Python
python 实现保存最新的三份文件,其余的都删掉
Dec 22 Python
Python random模块的使用示例
Oct 10 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
让Json更懂中文(JSON_UNESCAPED_UNICODE)
2011/10/27 PHP
php compact 通过变量创建数组
2016/11/15 PHP
centos 7.2下搭建LNMP环境教程
2016/11/20 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
javascript来定义类的规范小结
2010/11/19 Javascript
修改jQuery Validation里默认的验证方法
2012/02/14 Javascript
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
2012/12/27 Javascript
使用js写的一个简易的投票
2013/11/27 Javascript
javascript中match函数的用法小结
2014/02/08 Javascript
javascript页面上使用动态时间具体实现
2014/03/18 Javascript
node.js中的fs.rmdirSync方法使用说明
2014/12/16 Javascript
node.js中的fs.createReadStream方法使用说明
2014/12/17 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
2015/03/28 Javascript
JS实现的表格操作类详解(添加,删除,排序,上移,下移)
2015/12/22 Javascript
Bootstrap学习笔记之环境配置(1)
2016/12/07 Javascript
详解javascript表单的Ajax提交插件的使用
2016/12/29 Javascript
从零学习node.js之搭建http服务器(二)
2017/02/21 Javascript
JavaScript条件判断_动力节点Java学院整理
2017/06/26 Javascript
用React-Native+Mobx做一个迷你水果商城APP(附源码)
2017/12/25 Javascript
详解element-ui表格中勾选checkbox,高亮当前行
2019/09/02 Javascript
layui的select联动实现代码
2019/09/28 Javascript
[19:14]DOTA2 HEROS教学视频教你分分钟做大人-维萨吉
2014/06/24 DOTA
使用python爬取微博数据打造一颗“心”
2019/06/28 Python
Python基础之高级变量类型实例详解
2020/01/03 Python
基于keras 模型、结构、权重保存的实现
2020/01/24 Python
如何设置PyCharm中的Python代码模版(推荐)
2020/11/20 Python
python读写数据读写csv文件(pandas用法)
2020/12/14 Python
Expedia加拿大官方网站:加拿大最大的在线旅游提供商
2017/12/31 全球购物
Famous Footwear加拿大:美国多品牌运动休闲鞋店
2018/12/05 全球购物
职工趣味运动会方案
2014/02/10 职场文书
优秀经理获奖感言
2014/03/04 职场文书
委托书的写法
2014/09/16 职场文书
新郎新娘答谢词
2015/01/04 职场文书
《圆明园的毁灭》教学反思
2016/02/16 职场文书
css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效
2021/04/29 HTML / CSS
MyBatis XPathParser解析器使用范例详解
2022/07/15 Java/Android