把函数作为参数传入,这样的函数称为高阶函数,高阶函数是函数式编程的体现。函数式编程就是指这种高度抽象的编程范式。
1.体验高阶函数
在Python中,abs()函数可以完成对数字求绝对值计算。
1
|
abs ( - 10 ) # 10 |
round()函数可以完成对数字的四舍五入计算。
1
2
|
round ( 1.2 ) # 1 round ( 1.9 ) # 2 |
需求:任意两个数字,按照指定要求整理数字后再进行求和计算。
方法1
1
2
3
4
5
6
|
def add_num(a, b): return abs (a) + abs (b) result = add_num( - 1 , 2 ) print (result) # 3 |
方法2
1
2
3
4
5
6
|
def sum_num(a, b, f): return f(a) + f(b) result = sum_num( - 1 , 2 , abs ) print (result) # 3 |
注意:两种方法对比之后,发现,方法2的代码会更加简洁,函数灵活性更高。
函数式编程大量使用函数,减少了代码的重复,因此程序比较短,开发速度较快。
2.内置高阶函数
2.1 map()
map(func, lst),将传入的函数变量func作用到lst变量的每个元素中,并将结果组成新的列表(Python2)/迭代器(Python3)返回。
需求:计算list1序列中各个数字的2次方。
1
2
3
4
5
6
7
8
9
10
11
|
list1 = [ 1 , 2 , 3 , 4 , 5 ] def func(x): return x * * 2 result = map (func, list1) print (result) # <map object at 0x0000013769653198> print ( list (result)) # [1, 4, 9, 16, 25] |
2.2 reduce()
reduce(func,lst),其中func必须有两个参数。每次func计算的结果继续和序列的下一个元素做累积计算。
注意:reduce()传入的参数func必须接收2个参数。
需求:计算list1序列中各个数字的累加和。
1
2
3
4
5
6
7
8
9
10
11
12
|
import functools list1 = [ 1 , 2 , 3 , 4 , 5 ] def func(a, b): return a + b result = functools. reduce (func, list1) print (result) # 15 |
2.3 filter()
filter(func, lst)函数用于过滤序列, 过滤掉不符合条件的元素, 返回一个 filter 对象。如果要转换为列表, 可以使用 list() 来转换。
1
2
3
4
5
6
7
8
9
10
11
|
list1 = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ] def func(x): return x % 2 = = 0 result = filter (func, list1) print (result) # <filter object at 0x0000017AF9DC3198> print ( list (result)) # [2, 4, 6, 8, 10] |
以上就是python 高阶函数简单介绍的详细内容,更多关于python 高阶函数的资料请关注服务器之家其它相关文章!
原文链接:https://www.cnblogs.com/iHeling/p/14333781.html