函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。
函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!
Python对函数式编程提供部分支持。由于Python允许使用变量,因此,Python不是纯函数式编程语言。
1、高阶函数(Higher-order function)
- 变量可是指向函数
\#把函数赋给变量 f = abs print(f(-1)) \#把函数结果赋给变量 f1 = abs(-1) print(f1)
abs(-1)是函数调用,而abs是函数本身。要获得函数调用结果,我们可以把结果赋值给变量。我们把函数本身赋给变量,变量的作用跟函数一样,可以通过变量来调用这个函数。
结论:函数本身也可以赋值给变量,即:变量可以指向函数。
- 函数名也是变量
函数名其实就是指向函数的变量!对于abs()这个函数,完全可以把函数名abs看成变量,它指向一个可以计算绝对值的函数!
- 传入函数
既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。
def add(x, y, f): return f(x)+f(y) s = add(-4, 7, abs) print(s)
结果:
11 [Finished in 0.1s]
网友评论