python基础(part17)--函数式编程

网友投稿 313 2022-08-31


python基础(part17)--函数式编程

鄙人学习笔记 开发工具:Spyder

文章目录

​​函数式编程​​

​​举个例子1​​​​举个例子2​​​​举个例子3​​

​​函数作为参数​​

​​lambda表达式​​

​​举个例子1​​

​​内置高阶函数​​

​​filter​​​​map​​​​sorted​​​​max​​

​​函数作为返回值​​

函数式编程

定义

函数式编程可以用一系列函数解决问题。

说明

①函数可以赋值给变量,赋值后变量绑定函数。 ②允许将函数作为参数传入另一个函数。 ③允许函数返回一个函数。

高阶函数

高阶函数是将函数作为参数或返回值的函数

举个例子1

看下面这段代码:

def fun01(): print("fun01执行")#将fun01方法赋值给变量a(并没有执行fun01)a = fun01

为了验证一下我们所说的言论,我们调用一下变量a, 间接执行函数fun01:

def fun01(): print("fun01执行")#将fun01方法赋值给变量a(并没有执行fun01)a = fun01a()

举个例子2

看下面这段代码:

def fun01(): print("fun01执行")def fun02(func): print("fun02执行") func()

我们看到函数fun02有一个参数func, 这个参数可以被调用。对于fun02的定义者而言,并不需要知道func的具体逻辑是什么。

举个例子3

我有下面这个列表:

这时,我们发现大量代码是重复的,只不过有些if条件不一样。对于相同的代码,我们要提取; 对于不同的代码,我们要封装。

首先,我们提取相同点:

备注:函数式编程的这种思想,也影射出了面向对象的分而治之的思想。

运行一下代码:

函数作为参数

lambda表达式

定义

lambda表达式是一种匿名方法。

作用

①lambda表达式作为参数传递时,语法简洁,优雅,代码可读性强。 ②lambda表达式可随时创建和销毁,减少程序耦合度。

语法

定义lambda表达式:

变量 = lambda 形参:方法体

调用lambda表达式:

变量(实参)

说明

①形参没有可以不填 ②方法体只能有一条语句,且不支持赋值语句。

举个例子1

首先我们写几个函数,并把它们分别改为lambda表达式:

①不带参数

②带参数

③有返回值

为什么要改写成lambda表达式? 原因就是,lambda表达式,没有名字(所以我们有时候也称其为匿名方法)它可以使我们的程序更加简洁;且,当我们只想把一个方法作为参数进行传递,但是不希望直接调用这个方法时(这个方法活着的价值就是传参),我们就可以用lambda表达式。

最后备注:如果我们看见一大段相似的代码,但是其中的计算方式(算法)不一样。我们就应该将算法提取出去(lambda表达式),将共性保留下来(保留成静态函数)。

内置高阶函数

高阶函数,即将函数作为参数或返回值的函数。 对于一些内置的高阶函数,在下面的笔记中,每一个内置高阶函数我都举个例子,大概就能明白了,不明白,请自行看文档/百度。

filter

举个例子

先定义Enemy类和创建Enemy对象列表(这些class和列表在下面的内置高阶函数的例子中也会用到):

map

举个例子

映射:

sorted

举个例子

②升序排序(需要用变量接收返回值)

max

举个例子

函数作为返回值

未完待续,暂时不想写了。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:springboot 实现不同context
下一篇:java调用相互依赖的dll的处理方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~