函数式编程和函数编程是不一样的。函数是对一段代码进行封装,使得函数达到某个功能或者结果。函数式编程,简言之就是进行数字运算的一个过程。函数可以作为参数传入另外的函数,其返回结果也可以是函数。
一、高阶函数
1、什么是高阶函数?就是把函数作为参数传入函数中。
# 实例1,我们看看函数的特性,变量可以指向函数
print(abs(-10))
>>> 10
# 这是一个内置函数,含义是获取绝对值
# 如果我们只写abs,不带后面的括号会提示什么?
abs
>>> <built-in function abs>
# 翻译过来就是,内置函数abs。说明abs(-10)是函数的调用,abs是函数本身。
# 如果我们把函数本身赋值给另外的一个变量,会出现什么情况?
a=abs
a
>>> <built-in function abs>
# 输出的结果一样,说明变量可以指向函数,同时函数可以赋值给变量。
# 那我们用指向函数的变量,对数字取绝对值。
print(a(-6))
>>> 6
# 这时,a 已经指向函数abs,同时,具备了abs的功能。
# 实例2,函数名就是变量
abs=666
print(abs(-6))
>>> Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: ‘int‘ object is not callable
# 显然,abs已经指向了数字666,不在指向求绝对值的函数了。
2、map函数
map(func, *iterables)
- func代表的是调用的函数
- iterables代表的是迭代函数
- map 函数是把list中的每个元素都传入到func函数中,取得运行结果。
# 实例1
def _abs(x):
return abs(x)
a=map(_abs,[1,-2,-3,4,-5])
list(a)
>>> [1,2,3,4,5]
# 首先定义函数_abs,作用为取数值的绝对值。接着利用map函数,把list 中的每个元素传入到_abs 函数中,得到相应的绝对值。
# 实例2
def _int(x):
return int(x)
a=map(_int,[‘1‘,‘2‘,‘3‘,‘4‘,‘5‘])
print(list(a))
>>> [1, 2, 3, 4, 5]
# 把字符串转化为数值。
# 实例3,利用map函数,把list中的元素变为首字母大写,其他小写的规范名字
def func(z):
i=1
_str=""
for j in z:
if i==1:
_str=j.upper()
else:
_str+=j.lower()
i+=1
return _str
print(list(map(func,[‘adam‘, ‘LISA‘, ‘barT‘])))
>>> [‘Adam‘, ‘Lisa‘, ‘Bart‘]
3、reduce函数
reduce函数就是对传入的两个参数进行运算,然后运算后的值作为下次参数的其中一个。
reduce(function, sequence[, initial]) -> value
# 实例,计算1,2,3...9的和
from functools import reduce
def _add(x,y):
return x+y
print(reduce(_add,[1,2,3,4,5,6,7,8,9]))
>>> 45
# 取出list 中的两个数值,带入_add 函数,计算出的结果作为下一次的一个参数,直到计算完毕。
# 实例2,求 list [3, 5, 7, 9] 中的积
from functools import reduce
def func(a,b):
return a*b
print(reduce(func,[3, 5, 7, 9]))
>>> 945
关注公众号,了解更多!
原文:https://www.cnblogs.com/pyshadow/p/10400347.html