函数式编程(Functionalprogramming)
基于lambda演算的一种编程方式
-程序中只有函数
-函数可以作为参数,也可以作为返回值。
-纯函数式编程:LISP,Haskell.
-高阶函数
-返回函数
-匿名函数
-装饰器
-偏函数
函数:
最大程度复用代码。
-存在问题:如果函数很小,造成啰嗦。
-如果函数调用次数少,造成浪费。
-对于阅读者来说,造成阅读流程被迫中断。
lambda表达式(匿名函数)
-一个表达式,函数体相对于简单。
-可以有参数,多个参数用逗号隔开
用法:
-以lambda开头
-紧跟一定参数
-参数后用冒号和表达式隔开
-只是一个表达式,没有return
案例:计算一个数字的100倍
stm = lambda x: 100 * x
print(stm(89))
stm2 = lambda x , y ,z :z+y*10 + z*100
print(stm2(4,5,6))
高阶函数
-把函数作为参数使用,叫做高阶参数。
函数名称就是一个变量.
案列:
def funA():
print("ln funA")
funB = funA
funB()
以上带轮得出结论:
-函数名称式变量
-funB和funA只是名称不一样而已。
系统高阶函数-map
愿意就是映射,即把集合或者列表的元素,按照一定的规则进行操作,生成一个新的列表或者集合。
map函数就是系统提供的具有映射功能的函数,返回值是一个迭代对象。
l1 = [i for i in range(10)]
l2 = []
for i in l1:
l2.append(i* 10)
print(l2)
#利用map实现
def mulTen(n):
return n * 10
l3 = map(mulTen , l1)
print(type(l3))
for i in l3:
print(i)
reduce:
愿意式归并,缩减。
把一个可迭代对象归并成一个结果。
对于函数参数要求:
必须有两个参数,必须有返回结果。
reduce 需要导入functools包。
案列:
from functools import reduce
def myAdd(x,y):
return x+ y
rst = reduce(myAdd , [1,2,3,4,5,6,7])
print(rst)