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 Queue模块详解
Nov 30 Python
Python遍历指定文件及文件夹的方法
May 09 Python
python计算文本文件行数的方法
Jul 06 Python
python开发之文件操作用法实例
Nov 13 Python
linecache模块加载和缓存文件内容详解
Jan 11 Python
基于数据归一化以及Python实现方式
Jul 11 Python
pyinstaller参数介绍以及总结详解
Jul 12 Python
Python&&GDAL实现NDVI的计算方式
Jan 09 Python
Python关键字及可变参数*args,**kw原理解析
Apr 04 Python
Python numpy矩阵处理运算工具用法汇总
Jul 13 Python
Selenium及python实现滚动操作多种方法
Jul 21 Python
Python实现照片卡通化
Dec 06 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制作unicode解码工具(unicode编码转换器)代码分享
2013/12/24 PHP
PHP面向对象程序设计类的定义与用法简单示例
2016/12/27 PHP
php5.x禁用eval的操作方法
2018/10/19 PHP
Nigma vs AM BO3 第二场2.13
2021/03/10 DOTA
纯js实现瀑布流展现照片(自动适应窗口大小)
2013/04/08 Javascript
javascript完美拖拽的实现方法
2013/09/29 Javascript
jQuery的3种请求方式$.post,$.get,$.getJSON
2014/03/28 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
2015/07/10 Javascript
深入理解JS正则表达式---分组
2016/07/18 Javascript
浅谈JS继承_寄生式继承 & 寄生组合式继承
2016/08/16 Javascript
简单的Vue异步组件实例Demo
2017/12/27 Javascript
vue-router 起步步骤详解
2019/03/26 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
ES6 Promise对象的应用实例分析
2019/06/27 Javascript
vue实现直播间点赞飘心效果的示例代码
2019/09/20 Javascript
Javascript 类型转换、封闭函数及常见内置对象操作示例
2019/11/15 Javascript
Vuex模块化应用实践示例
2020/02/03 Javascript
使用原生JS实现滚轮翻页效果的示例代码
2020/05/31 Javascript
python 实现网上商城,转账,存取款等功能的信用卡系统
2016/07/15 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
2018/04/22 Python
Python排序算法之选择排序定义与用法示例
2018/04/29 Python
python 读取文本文件的行数据,文件.splitlines()的方法
2018/07/12 Python
Python实现 版本号对比功能的实例代码
2019/04/18 Python
seek引发的python文件读写的问题及解决
2019/07/26 Python
详细介绍pandas的DataFrame的append方法使用
2019/07/31 Python
python实现粒子群算法
2020/10/15 Python
SQL Server 2000数据库的文件有哪些,分别进行描述
2013/03/30 面试题
上海中网科技笔试题
2012/02/19 面试题
户籍证明的格式
2014/01/13 职场文书
行政管理专业求职信
2014/07/06 职场文书
干部职工纪律作风整改措施思想汇报
2014/10/11 职场文书
故意杀人罪辩护词
2015/05/21 职场文书
初一英语教学反思
2016/02/15 职场文书
ORACLE数据库应用开发的三十个注意事项
2021/06/07 Oracle
美国运营商 T-Mobile 以 117.83Mb/s 的速度排第一位
2022/04/21 数码科技
输入框跟随文字内容适配宽实现示例
2022/08/14 Javascript