-
functools定义
Higher-order functions and operations on callable objects
高阶函数和可调用对象上的操作 -
functools.partial 通俗讲就是固定某些参数,改变某些参数,然后返回一个新的函数。— “偏” 函数
(简单记忆,对某些参数比较偏心) -
源码定义
# 其中 *args和**keywords是可变参数,不同点是,*args可以接受无名参数比如(1,2,3,4) 而**keywords接受键值对参数(有名字的参数),如v1=1, v2=2
def partial(func, /, *args, **keywords):
def newfunc(*fargs, **fkeywords):
newkeywords = {**keywords, **fkeywords}
return func(*args, *fargs, **newkeywords)
newfunc.func = func
newfunc.args = args
newfunc.keywords = keywords
return newfunc
- 举例子
from functools import *
# 普通函数
def add(a, b, c):
return 100*a + 10*b + c
# 偏函数想要利用这个函数但是固定某些参数,只改变部分参数,然后返回一个新函数
# 此处固定c=2, b=1
add_part = partial(add, c = 2, b = 1)
# 5是无名参数 *args, 传给a
# 输出 5*100 + 10*1 + 2 = 512
print(add_part(add, 5))
- 参考文献:
https://docs.python.org/3/library/functools.html
https://www.geeksforgeeks.org/partial-functions-python/