from functools import partial
partial 传入参数
第一个为一个可调用对象,一般为一个函数
后面的参数 是函数的入参
最后返回一个新的可调用对象
partial中可以不用把函数的参数全部传入
没有传入的参数,可以当做返回对象的如参
编写python程序时候,可能会出现这么一种情况。
如
一个函数的参数,需要传入一个函数名,如下、
def func_a():
pass
def main(func):
func()
那么,如果func_a是带参数的怎么办呢? 我们不能把func_a(参数)传入到main中
只能传入函数名func_a
partial,为我么解决了这个问题
使用partial,包装一个函数,返回一个函数名。
from functools import partial
new_func_name = partial(func_a,参数)
"""
后面的事情就是把 新的函数名 传入到 main就可以了
"""
这个和c++
的bind
功能类似
我们想预先把一个函数的入参填满,然后直接func()
调用。
但是不是所有的函数都有默认参数,这时候就需要partial
from functools import partial
def f(a,b,c,d):
print(a,b,c,d)
f1 = partial(f,1)
f1(2,3,4)
"""
打印 1 2 3 4
f1 = partial(f,1) 这一句a=1
f1(2,3,4) 就是b c d 为 2 3 4
"""
def func(a,b,text=5):
print(a,b,text)
func1 = partial(func,5,text=10)
func1(6)
def func_text(a,b,c):
print(a,b,c)
func1 = partial(func_text,1,2,3)
func1()