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 19 Python
python爬虫获取京东手机图片的图文教程
Dec 29 Python
Python实现对特定列表进行从小到大排序操作示例
Feb 11 Python
Python使用字典的嵌套功能详解
Feb 27 Python
用python求一个数组的和与平均值的实现方法
Jun 29 Python
OpenCV 边缘检测
Jul 10 Python
关于Python3 类方法、静态方法新解
Aug 30 Python
使用matlab或python将txt文件转为excel表格
Nov 01 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
Feb 12 Python
python中怎么表示空值
Jun 19 Python
python中常见错误及解决方法
Jun 21 Python
python turtle绘图命令及案例
Nov 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
php中iconv函数使用方法
2008/05/24 PHP
php ajax异步读取rss文档数据
2016/03/29 PHP
JSON 学习之JSON in JavaScript详细使用说明
2010/02/23 Javascript
js禁止页面复制功能禁用页面右键菜单示例代码
2013/08/29 Javascript
JavaScript判断变量是否为undefined的两种写法区别
2013/12/04 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/06/05 Javascript
使用jquery组件qrcode生成二维码及应用指南
2015/02/22 Javascript
jQuery使用$.each遍历json数组的简单实现方法
2016/04/18 Javascript
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
JavaScript基于原型链的继承
2016/06/22 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
Angular-Touch库用法示例
2016/12/22 Javascript
vue.js声明式渲染和条件与循环基础知识
2017/07/31 Javascript
Django使用多数据库的方法
2017/09/06 Javascript
AngularJS监听ng-repeat渲染完成的两种方法
2018/01/16 Javascript
vue+springmvc导出excel数据的实现代码
2018/06/27 Javascript
Vue表单demo v-model双向绑定问题
2018/06/29 Javascript
使用 Node.js 实现图片的动态裁切及算法实例代码详解
2018/09/29 Javascript
mpvue全局引入sass文件的方法步骤
2019/03/06 Javascript
微信小程序云开发 生成带参小程序码流程
2019/05/18 Javascript
详解wepy开发小程序踩过的坑(小结)
2019/05/22 Javascript
vue-cli脚手架打包静态资源请求出错的原因与解决
2019/06/06 Javascript
vue项目使用.env文件配置全局环境变量的方法
2019/10/24 Javascript
vue-router之解决addRoutes使用遇到的坑
2020/07/19 Javascript
Python 把序列转换为元组的函数tuple方法
2019/06/27 Python
django的csrf实现过程详解
2019/07/26 Python
python查看数据类型的方法
2019/10/12 Python
python标准库OS模块详解
2020/03/10 Python
HTML5 在canvas中绘制矩形附效果图
2014/06/23 HTML / CSS
Under Armour安德玛法国官网:美国高端运动科技品牌
2018/06/29 全球购物
应届生会计电算化求职信
2013/10/03 职场文书
质检员的岗位职责
2013/11/15 职场文书
老公保证书
2015/01/17 职场文书
2015年大学学生会工作总结
2015/05/13 职场文书
idea 在springboot中使用lombok插件的方法
2021/08/02 Java/Android
docker compose 部署 golang 的 Athens 私有代理问题
2022/04/28 Servers