我是靠谱客的博主 可靠枕头,最近开发中收集的这篇文章主要介绍第10节-函数三(高阶函数/匿名函数/闭包/装饰器),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

第10节-函数三(高阶函数/匿名函数/闭包/装饰器)

    • 一、高阶函数
    • 二、匿名函数
      • 1.过滤器
      • 2.匿名函数(lambda函数)
    • 三、闭包
    • 四、装饰器

一、高阶函数

满足下列特点之一的函数称之为高阶函数:
特点1:接收一个或者多个函数作为参数
特点2:将函数作为返回值(不加括号

注意:函数做形参和实参传参时,均不加括号
在这里插入图片描述

二、匿名函数

1.过滤器

filter():内嵌的过滤器函数,可以过滤一些可迭代的对象,返回fiter类型的对象(可以通过list强制转换为列表)

filter()的两个参数:filter(过滤的条件, 过滤的序列)—满足条件则留下

过滤条件:一般为lambda函数,两者配合使用

2.匿名函数(lambda函数)

也叫 lambda 函数,主要用来创建一些简单的函数

语法:lambda 参数,参数 : 表达式
在这里插入图片描述
lambda用完后自动销毁,不占用内存

三、闭包

行成闭包的3个条件:
(1) 函数嵌套
(2) 将内部函数作为返回值返回
(3) 内部函数必须要使用到外部函数的变量或“参数” (内部函数可以直接使用外部函数的参数)

为什么要用闭包 :
1.通过闭包可以创建一些只有当前函数能访问的变量
2. 可以将一些私有数据藏到闭包中

闭包的特性:使变量不被销毁,内存不被释放【涉及垃圾回收机制】
在这里插入图片描述
上图注释:
(1)当调用fn()时,(2)执行(3)不执行,因为return后面的代码不再执行
(2)当调用fn()()时,先执行fn()再执行内嵌的fn1(),因此先执行(2)再执行(1),(3)始终未被执行

四、装饰器

1、开闭原则(OCP)设计思想:要求开发对程序的扩展,要关闭对程序的修改

2、装饰器就是不违反OCP原则,对程序进行扩展,添加功能

装饰器相当于在函数内部进行外部函数的调用,主要是为不违反OCP原则而引入,避免在不同函数内部修改原函数代码
在这里插入图片描述
装饰器就是另类的闭包,给其他函数做扩展使用
在这里插入图片描述
上图注释:
(1)内嵌函数直接使用外部函数的参数(e,f),且要求名字必须一样
(2)外部函数作为参数add——>old
在这里插入图片描述
在这里插入图片描述
注释:从上面2个图可以看出,通过引入不定长参数,那么只需修改调用函数中的参数(fn或add),就能简单的改变装饰器的内容,而不用去修改原函数代码的参数(*args,**kwargs存在或删除)

3、装饰器的语法糖的一个写法

@扩展函数对象
定义被扩展的函数
被扩展函数调用
在这里插入图片描述

最后

以上就是可靠枕头为你收集整理的第10节-函数三(高阶函数/匿名函数/闭包/装饰器)的全部内容,希望文章能够帮你解决第10节-函数三(高阶函数/匿名函数/闭包/装饰器)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部