Python的学习笔记--函数式编程
函数式编程
主要思想是把运算过程尽量写成一系列嵌套的函数调用,不严谨的说:可以把函数的引用传递给变量。
例如:
1 | abs(-10) |
函数也可以当成返回值:
1
2
3def getMethod():
return abs
print(getMethod()(-1))打印结果是:1
python也支持
lambda
表达式1
2f=lambda x:x+x
print(f(10))打印结果是:10
可以固定一个函数的默认值,返回一个新函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49import functools
def add(x="2"):
print(x)
add()
add1=functools.partial(add, x="5")
add1()
```
打印结果:`2 5`
我们使用`functools.partial`方法把`add`的默认值修改成一个新的函数`add1`
#### 常用的几个函数
- map和reduce使用
`map`函数的格式可以大致的表示为:`map(func,[])`,其功能就是把数组的每一个元素代入到`func`函数中,具体的实现功能如下:
`list(map(abs,[-1,3,4,-6]))`,打印结果是:[1,3,4,5]
我们可以根据其定义编写对应的功能:
```python
def map1(func,arr):
l=[]
for x in arr:
yield func(x)
print(map1(abs,[1,-3,-4,6]))
```
`reduce`是一个累计的函数,把上次计算的结果,当成下次运行的一个参数:`s1=f(x,y);s2=f(s1,z);`
``` python
def add(x,y):
return x+y
print(reduce(add,[1,-3,-4,6]))
```
计算结果:`1-3-4+6=0`
用python代码来表示`reduce`
``` python
def reduce1(func,arr):
s=0
for x in arr:
s=func(s,x)
return s;