Python 函数式编程(一):高阶函数/函数名变量
函数是面向过程的程序设计的基本单元。
函数式编程就是一种抽象程度很高的编程范式。 纯粹的函数式编程语言编写的函数没有变量。 因此, 任意一个函数, 只要输入是确定的, 输出就是确定的, 这种纯函数我们称之为没有副作用。 而允许使用变量的程序设计语言, 由于函数内部的变量状态不确定, 同样的输入, 可能得到不同的输出, 因此, 这种函数是有副作用的。
函数式编程的一个特点就是, 允许把函数本身作为参数传入另一个函数, 还允许返回一个函数!
高阶函数
变量可以指向函数
>> print(abs(-10)) 10 >> print(abs) <built-in function abs>
可以看到,print(abs) Python中这样居然是不报错
把函数本身赋值给变量
函数本身也可以赋值给变量, 即:变量可以指向函数。
如果一个变量指向了一个函数,那么,可以通过该变量来调用这个函数
>>f = abs >>print(f(-10)) 10
函数名也是变量
函数名其实就是指向函数的变量! 对于 abs()这个函数, 完全可以把函数名 abs 看成变量, 它指向一个可以计算绝对值的函数
如果把 abs 指向其他对象, 示例如下:
abs = 10 print(abs(-10))
把 abs 指向 10 后, 就无法通过 abs(-10)调用该函数了! 因为 abs 这个变量已经不指向求绝对值函数了!
高阶函数
既然变量可以指向函数, 函数的参数能接收变量, 那么一个函数就可以接收另一个函数作为参数, 这种函数就称之为高阶函数
def add(x,y,f): return f(x)+f(y) print(add(-5,6,abs))
把函数作为参数传入, 这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式。
Python 内建的高阶函数有 map、 reduce、 filter、 sorted。