装饰器总结
什么是装饰器?处理函数的函数,加一个功能,但是不影响原来函数的内部结构生活中的例子:给手机加一个外壳,外壳保护了手机
装饰器有什么用?增强函数的功能
装饰器使用场景增加被装饰函数的行为代码复用
一个函数接收另一个函数作为参数,这种函数称之为高阶函数。
函数的重要特性
1.在python中,一切皆为对象,所以函数也是一个对象,从而函数可以赋值给变量。
定义一个add函数,函数的功能是实现两个数相加
![](/d/20211017/146102f2062f3b5fd66f8c93c7b1115d.gif)
系统为函数分配了一个内存地址:0x00000000021B3798
![](/d/20211017/22428b7b844bcfe43307c7eb615f9423.gif)
2.一个函数可以作为另一个函数的返回值
![](/d/20211017/0a629b20004374750608d8f4c3a28317.gif)
3.一个函数可以嵌套定义在另一个函数中
![](/d/20211017/27a57f67136a3e3fbd33bd570bc2b485.gif)
![](/d/20211017/1d383da29c772e87313956dd7043bd74.gif)
4.一个函数可以作为另一个函数的实参。
先来了解一下map函数
map函数是根据指定函数对指定序列做映射,可以有效提高程序运行效率。
看一下map函数的源码:map(func, *iterables)
map函数接受两个参数:
func:指定函数函数
iterables:可迭代对象,一个序列或者多个序列,即函数对应的实参
![](/d/20211017/f3f7d9416eb5d6f3baa29ca41cfec691.gif)
![](/d/20211017/8a3cfa957db84c4f92a5a5997117bd16.gif)
装饰器
想要实现一个功能,在不改变 test 函数内部结构的前提下,在前面加一句 “少壮不努力”
![](/d/20211017/f3244a2b7bc918f9814dea717265c201.gif)
弄清楚了装饰器的工作原理:
- 写一个高阶函数,即参数是函数,返回的也是函数;上面的例子,传函数 test 作为实参,最后返回函数 test ;
- 在利用语法糖@,简化赋值操作;
但这样的代码是有缺陷:test 函数直接返回了函数名,这样后面就不好调用了。
改 进:
![](/d/20211017/9b2a531cf69fb1042cc6bcc437842c7a.gif)
![](/d/20211017/86db759c2eb794484003f543dde8ef98.gif)
到此这篇关于python 进阶学习之python装饰器小结的文章就介绍到这了,更多相关python 装饰器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:- 如何正确理解python装饰器
- Python必备基础之闭包和装饰器知识总结
- Python函数装饰器的使用教程
- python 装饰器的使用与要点
- python高级语法之闭包和装饰器详解
- Python pytest装饰器总结(实例详解)
- Python装饰器的应用场景及实例用法