当前位置 : 主页 > 编程语言 > python >

python笔记 高阶函数

来源:互联网 收集:自由互联 发布时间:2022-10-26
0 环境 编辑器:idea或vscode 系统版本:windows10 python版本:3.9.6 1 前言 什么是高阶函数,学它有啥用处,先回答用处,它是之后学的装饰器算是它的延伸,一开始学装饰器都是有点似懂非

0 环境

  • 编辑器:idea或vscode
  • 系统版本:windows10
  • python版本:3.9.6

1 前言

什么是高阶函数,学它有啥用处,先回答用处,它是之后学的装饰器算是它的延伸,一开始学装饰器都是有点似懂非懂的,但是先搞明白了高阶函数,再去看装饰器,明显就会轻松好多,窗户纸一捅就破的那种。

2 高阶函数的定义

高阶函数和普通函数到底有哪些区别,不都是函数?这里是看它的返回值,高阶函数的返回值是一个函数或者参数是函数的函数的情况下,就是高阶函数。拆分开来就是情况一、它的返回值是个函数,情况二、它的入参是个函数,这两种情况的函数,符合高阶函数。函数可以被赋值给变量(a = fn),正常被调用(a())。

函数当参数的情况下,也是可以的,compare接收函数的,默认为None,当我调用demo函数时,传入一个列表,一个匿名函数,demo函数执行compare两个值的比较结果,最终return出去。

def demo(val, compare=None):
a, b = val[:2]
return compare(a, b)

if __name__ == '__main__':
print(demo([2, 3, 4], compare = lambda a, b: a < b))

python笔记 高阶函数_匿名函数

如果你认为这个比较最好能默认,​​def demo(val, compare = lambda a, b: a < b)​​,这样我们是不是很方便了,直接​​demo([2, 3, 4])​​,无需每次去复制粘贴后面的匿名函数。

3 总结

把函数作为入参的应用场景,大多数用于固定的逻辑下,很少一部分会用于不在固定的场景下。肯定会有一个疑问就是,我一个函数是可以直接调用其他普通的函数,何必多次一举呢,比如我们之前学的filter函数,它是可以自定义传入一个函数的,在开动脑筋,假如我不使用函数作为参数的方式,而是之前那种写死普通函数的方式,我想过滤个其他字段或者说我想让它取反输出,是不是就做不到了,但是函数是参数,我们就拥有了改成我想要的样子的权利,是不是更加友好了。

网友评论