第十次课

1. 高阶函数

特点:
1.接受一个或多个函数作为参数。
2.将函数作为返回值
如下图,几行取出列表中偶数的代码,由于fun1()函数接收了fun()函数作为参数,因此这是高阶函数
在这里插入图片描述

在这里插入图片描述
匿名函数(lambda函数)
当函数的功能非常单一时,可以不用给函数起名字,节省命名空间
lambda()函数就是专门用来创建一些简单的函数
创建的函数在使用后就会销毁
语法: lambda 参数:表达式
如下使用lambda函数直接打印两数之和
在这里插入图片描述
在这里插入图片描述
也可以使用参数接受之后再打印
在这里插入图片描述
在这里插入图片描述

filter()函数
需要两个参数,按照设定的规则,过滤出想要的数据
1,传递一个函数
2.传递一个需要过滤的序列(可迭代的)
在这里插入图片描述
在这里插入图片描述
如下,filter将list1中的数据通过对应的匿名函数筛选出偶数
在这里插入图片描述
在这里插入图片描述

2.闭包

将函数作为返回值也是高阶函数也称为闭包
闭包的好处
1.可以创建一些只有当前函数能访问的变量
2.可以将一些私有数据藏到闭包内
形成闭包的条件
1,函数嵌套
2,将内部函数作为返回值返回
3,内部函数必须要使用到外部函数的变量
在这里插入图片描述
图中的nonlocal的作用是告诉解释器,此处使用的是外部变量num1
本意是要修改外部变量的值,实际上是重新进行赋值
在这里插入图片描述

3.装饰器

装饰器的引入
装饰器本质上也是一个闭包,所以满足闭包的三个基本条件
1,函数嵌套
2,将内部函数作为返回值返回
3,内部函数必须要使用到外部函数的变量

我们可以直接通过修改函数中的代码来完成需求,但是会产⽣以下⼀些问题
如果修改的函数多,修改起来会⽐较麻烦
不⽅便后期的维护
这样做会违反开闭原则(ocp) 程序的设计,要求开发对程序的扩展,要关闭对程序的修改
4. 装饰器的使⽤

通过装饰器,可以在不修改原来函数的情况下来对函数进⾏扩展
在开发中,我们都是通过装饰器来扩展函数的功能的
在这里插入图片描述
在这里插入图片描述
@fun 等价于f = fun(fun1) 称为语法糖

作业

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值