之前freecodecomp的时候有学到过JavaScript中的柯里化和偏函数, 我们再一起对应看看Python3中说怎么玩的。

柯里化

柯里化是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。

1
2
3
4
5
6
7
8
9
10
11
12
def un_curried(x, y):
return x + y

def curried(x):
def tmp(y):
return x + y
return tmp

print(un_curried(2, 3))
# 5
print(curried(2)(3))
# 5

偏函数

偏函数是把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。

functools.partial(func, /, *args, **keywords)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from functools import partial

def impartial(x, y, z):
return x + y + z

partial_fn_2 = partial(impartial, 2)
print(partial_fn_2(3, 4))
# 9

partial_fn_2_3 = partial(impartial, 2, 3)
print(partial_fn_2_3(4))
# 9

partial_fn_null = partial(impartial)
print(impartial(2, 3, 4))
# 9

Reference