1.什么是函数式编程?
大概是--function,是一种编程范式,最贴近于计算特点有:
一个把计算视为函数而非指令,B纯函数式编程:不需要变量,没有副作用,测试简单的.C支持高阶函数,代码简洁。
Python支持的函数式编程:
一。不是纯函数式编程,允许有变量
b支持高阶函数:允许函数作为变量传入
角支持闭包,有了闭包就能返回函数
d。有限度地支持匿名函数
2.变量可以指向函数
直接写一个函数,例如:ABS(绝对值函数),此时它返回的是一个函数对象。
再定义一个变量F,F指向一个函数F = ABS,F =( - 20)
这说明:变量可以指向一个函数,直接可以对这个函数进行调用和直接对这个函数调用的效果是一样的。
函数名其实就是指向函数的变量
ABS
ABS = LEN(指向LEN函数)
函数名是ABS,指向的是LEN函数,在这里函数名与普通变量没有什么区别。只不过它指向的是一个函数。
高阶函数:能够接收函数做参数的函数
例如:
def add(x,y,f):
return f(x)+ f(y)
加(-5,9-,ABS)
这里根据函数的定义,执行的代码其实是:ABS(-5)+ ABS(9)
3.python中地图()函数
地图()是蟒内置的高阶函数,它接收一个函数˚F和一个列表中,并通过把函数˚F作用在LIS的每个元素上,得到一个新的列表并返回。
注意:地图()函数作用后是得到一个新的列表并返回,不是原来的列表了。
例如:
def f_pingf(x):
返回x * x
打印地图(f_pingf,[1,2,3,4,5])
4.python中的减少()函数
reduce()也是python内置的高阶函数,它同样接收一个函数f和一个list,不同的是:reduce接收的f函数必须传入两个参数,reduce()对列表的每个元素反复调用f函数,并返回最终结果值。
def f(x,y):
return f(x)+ f(y)
打印减少(F,[1,2,3,4,5,6,7,8])
减少()还可以接收第三个可选参数,作为计算的初始值。
例如:reduce(f,[1,2,3,4,5,6],100)的意思即为:100 + 1 + 2 + 3 + 4 + 5 + 6 = 121
5.python中的过滤器()函数
过滤()函数也是蟒内置的高阶函数,接受一个函数˚F和一个列表; ˚F的作用是对每个元素进行判断,返回真或假,滤波器()根据函数˚F的判断自动清除去掉不符合条件的数据,返回的是由符合条件的元素组成的新的列表。
注意: s.strip(rm)删除s字符串中开头,结尾处的rm序列的字符。
当rm为空时,默认删除空白符(包括'\ n','\ r','\ t',''),如下:
a = ' 123'
a.strip()
例如:
请利用滤波器()过滤出1〜100中平方根是整数的数,即结果应该是:
[1,4,9,16,25,36,49,64,81,100]
def is_sqrt(x):
r =(int)math.sqrt(x)
return r * r == x
打印过滤器(is_sqrt,范围(1101))