一等公民
- 函数在python中是一等公民(First-Class Object)
- 函数既是对象,是可调用对象
- 函数也可以作为普通变量,也可以作为函数的参数、返回值
高阶函数
高阶函数(High-order Function)
- 数学概念 y=f(g(x))
- 在数学和计算机中,高阶函数应当是至少满足下面一个条件的函数
- 接受一个或多个函数作为参数
- 输出一个函数
def counter(base):
def inc(step=1):
nonlocal base
base+=step
return base
return inc
上面的counter是高阶函数,因为return inc,即返回函数
f1=counter(5),f2=counter(5)
f1==f2?
内建高阶函数
排序sorted
sorted(iterable,*,key=None,reverse=False)-> 立即修改,返回新列表
过滤filter
- 定义filter(function,iterable)
- 对可迭代对象进行遍历,返回一个迭代器
- function参数是一个参数的函数,且返回值应当是bool类型,或其返回值等效布尔值
- function参数如果是None,可迭代对象的每一个元素自身的等效布尔值
list(filter(None,range(5)))
list(filter(lambda x:1,range(5)))
list(filter(lambda x:x%2==0,range(5)))
映射map
- 定义map(function,*iterable)->map object
- 对多个可迭代对象的元素,按照指定的元素进行映射
- 返回一个迭代器
list(map(lambda x:2,range(4)))
list(map(lambda x,y:{x+ord(y)},range(4),'abcde'))
柯里化
- 指的是将原来接受两个参数的函数编程新的接受一个参数的函数的过程。新的函数返回一个以原有第二个数为参数的函数
def add(x,y):
return x+y
add(2,3)
可以转换为
def add(x):
def num(y):
return x+y
return num
add(2)(3)
嵌套函数可以转成柯里化函数