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 相关文章推荐
在Docker上部署Python的Flask框架的教程
Apr 08 Python
python将unicode转为str的方法
Jun 21 Python
python-str,list,set间的转换实例
Jun 27 Python
Python OpenCV处理图像之图像像素点操作
Jul 10 Python
在Django model中设置多个字段联合唯一约束的实例
Jul 17 Python
python打造爬虫代理池过程解析
Aug 15 Python
pytorch:torch.mm()和torch.matmul()的使用
Dec 27 Python
深入了解如何基于Python读写Kafka
Dec 31 Python
解决pytorch报错:AssertionError: Invalid device id的问题
Jan 10 Python
最新2019Pycharm安装教程 亲测
Feb 28 Python
Python关于拓扑排序知识点讲解
Jan 04 Python
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
Jun 29 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
Zend Framework生成验证码并实现验证码验证功能(附demo源码下载)
2016/03/22 PHP
PHP模板引擎Smarty中的保留变量用法分析
2016/04/11 PHP
实现JavaScript中继承的三种方式
2009/10/16 Javascript
Extjs TimeField 显示正常时间格式的代码
2011/06/28 Javascript
js简易namespace管理器 实例代码
2013/06/21 Javascript
了解了这些才能开始发挥jQuery的威力
2013/10/10 Javascript
JS操作iframe里的dom(实例讲解)
2014/01/29 Javascript
JS将数字转换成三位逗号分隔的样式(示例代码)
2014/02/19 Javascript
JS中判断null、undefined与NaN的方法
2014/03/26 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
跟我学习javascript的基本类型和引用类型
2015/11/16 Javascript
封装的dialog插件 基于bootstrap模态对话框的简单扩展
2016/08/10 Javascript
web前端开发upload上传头像js示例代码
2016/10/22 Javascript
微信小程序 wxapp画布 canvas详细介绍
2016/10/31 Javascript
jQuery实现限制文本框的输入长度
2017/01/11 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
详解Node.js串行化流程控制
2017/05/04 Javascript
vue与vue-i18n结合实现后台数据的多语言切换方法
2018/03/08 Javascript
jQuery length 和 size()区别总结
2018/04/26 jQuery
vue .js绑定checkbox并获取、改变选中状态的实例
2018/08/24 Javascript
vue实现页面切换滑动效果
2020/06/29 Javascript
在vue中created、mounted等方法使用小结
2020/07/21 Javascript
Python语言技巧之三元运算符使用介绍
2013/03/04 Python
Python实现复杂对象转JSON的方法示例
2017/06/22 Python
在pycharm 中添加运行参数的操作方法
2019/01/19 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
2019/09/25 Python
python+opencv3生成一个自定义纯色图教程
2020/02/19 Python
彻底解决Python包下载慢问题
2020/11/15 Python
ASP.NET Core中的配置详解
2021/02/05 Python
Myprotein蛋白粉美国官网:欧洲畅销运动营养品牌
2016/11/15 全球购物
英国最大的网上药品商店:Chemist Direct
2017/12/16 全球购物
Jacques Lemans德国:奥地利钟表品牌
2019/12/26 全球购物
函授本科自我鉴定
2013/11/03 职场文书
表彰大会策划方案
2014/05/13 职场文书
公证委托书标准格式
2014/09/11 职场文书
八项规定个人对照检查材料思想汇报
2014/09/25 职场文书