高阶函数
-
python的变量可以指向函数,函数的变量可以接受参数,那么一个函数就可以接受另一个函数作为参数传入,这种函数就叫做高阶函数
In [1]: abs(-10) Out[1]: 10 In [5]: def add(x,y,f): ...: return f(x) + f(y) ...: In [6]: add(4,-5,abs) Out[6]: 9
-
常用的高阶函数map,reduce,filter
# map 函数接受两个参数,一个 是函数,一个是Iterable # map 将传入的函数作用在序列的每个 # 把 新生成的Iterable 作为结果返回 n [8]: def f(x): ...: return x * x * x ...: In [9]: r = map(f,[1,2,3,4,5,6,7,8,9]) In [11]: list(r) Out[11]: [1, 8, 27, 64, 125, 216, 343, 512, 729] # reduce 需要 导入functools包导入 # reduce 把一个函数做用在序列上 # 函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算 # filter # filter()把传入的函数依次作用于每个元素 # 然后根据返回值是True还是False决定保留还是丢弃该元素 In [29]: def is_odd(n): ...: return n % 2 == 1 ...: In [30]: list(filter(is_odd,[1,2,3,4,5,5,6,7,7,9,8])) Out[30]: [1, 3, 5, 5, 7, 7, 9]
匿名函数
lambda x : x * x
装饰器