函数式编程是指用一系列函数解决问题

好处:用每个函数完成每个细小的功能,一系列函数任意组合能够解决大问题
函数仅仅接收输入并产生输出,不包含任何能影响输出的内部状态

函数之间的可重入性

当一个函数的输入实参一定,结果也必须一定的函数为可重入函数

例子:

#可重入函数 def myadd(x,y):     return x+y #不可重入函数 s = 0 def myadd2(x,y):     global s     s+= x+y     return s

高阶函数

  • map
  • filter
  • sorted

什么是高阶函数

​ 满足下列条件中个任意一个的函数就是高阶函数

​ 条件一:函数接收一个或多个函数中用参数传入

​ 条件二:函数返回一个函数

map函数

​ map(func,*iterable)

​ map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回

例子:

对于list[1,2,3,4,5,6,7,8,9]

如果希望把list的每个元素都做平方,就可以用map()函数

因此,我们只需要传入函数f(x)==x*x,就可以利用mnap()函数完成这个计算

def f(x):     return x*x print(map(f,[1,2,3,4,5,6,7,8,9])) 输出结果: [1.4.9.10.25.36.49.64.81] 注意:map函数是不改变原有的list的,而是生成一个新的list

map()函数是python内置的高阶函数,对传入的list的每一个元素进行映射,返回一个新的映射之后的list

python3中,map函数返回的是一个map对象,需要list(map(fun,itor))来将映射之后的map对象转换成列表

map(func, *iterable) 返回一个可迭代对象,此可迭代
对象用函数 func对可迭代对象iterable中的每一个
元素作用参数计算后得一结果,当最短的一个可迭代对
象不再提供数据时可迭代对象生成数据结束

def mypower2(x, y):     return x ** y  for x in map(mypower2,[1,2,3,4],[4,3,2,1]):     print(x) # 看懂下面程序在做什么: for x in map(pow, [1,2,3,4], [4,3,2,1],              range(5, 10)):     print(x)

filtert函数

filter(function,iterable)返回一个可迭代对象

​ 此可迭代对象将iterable提供的数据用函数function进行筛选

​ function将对iterable中的每个元素求值