1、高阶函数
变量可以指向函数、函数名也可以被赋值为变量、也可以把一个函数当做参数传入下去。
(1)map/reduce
到底什么是map呢?下面用一段程序代码直接说明:
什么是reduce?下面同样用一段代码直接进行说明:
下面这一段就是reduce的用法,每次接收两个参数到f 中进行调用,随后,将得到的结果,继续加上下一个参数进行作用。
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
下面举一个例子:
(2)filter
Python 内建的filter用于过滤序列,和map()类似,同样接收一个函数和一个序列,然后将filter中传入的数值作用给每个元素,然后根据返回的数值,判断是保留还是丢弃该元素。
(3)sorted
2、返回函数
(1)将函数当作变量进行返回:
(2)闭包
如何解决这个问题呢?
如何理解这个闭包这个概念呢??????
实际上,我们调用这个count 这个函数,我们使得这个f1、f2、f3,这三个变量东西是什么呢??? 首先 count 这个函数返回的是一个list 列表的形式,然后列表中的内容是什么呢??? 再看 fs.append(f) , 也就是f 这个东西:对于第一种情况,不写成闭包的形式的话。
虽然,我们这样调用是没错,但是实际上,我们调用的函数f的返回值并没有被计算出来,看一下,如果写成下面的样子:
这样,返回的f1 和f2 f3 就不是函数了,而是直接是一个数值。也就是说, 调用fas.append的时候,就已经计算了返回值
再看下面 的这代码:
这个就很明晰那了,我虽然调用了这个f(i) 这个函数, 而且他页把这个i 的变量传下去了,他的返回值是它的下一级的一个函数,所以(已经把这个传入下去的变量的数值记录并且,记录再这个函数g 当中去了)
3、匿名函数
不废话了,这东西不复杂,用法就像教程上的东西:
4、装饰器
装饰一个函数的用法,用法如下;
5、偏函数