python中的partial函数的用法解析

在项目中遇到过这样的代码:

filter_pred = partial(
        filter_len,    # 这是个函数
        source_min_length=kwargs.get('source_min_length', 1),
        source_max_length=kwargs.get('source_max_length', float('inf')),
        target_min_length=kwargs.get('target_min_length', 1),
        target_max_length=kwargs.get('target_max_length', float('inf')),
    )

总搞不明白partial的用途,下面用一个简单的例子解释:

from functools import partial

def add(a, b):
    return a + b

rst1 = add(4, 2)                # 给add函数赋两个参数
plus3 = partial(add, 3)         # 先赋值一个参数
plus5 = partial(add, 5)
rst2 = plus3(4)                 # 再赋值另一个参数
rst4 = plus5(10)

print(rst1, ' ', rst2, ' ', rst4)
# 6 7 15

解释:一般函数在执行时,需要带上必要的参数调用,但有时参数可以在函数被调用之前提前获知,此时,一个函数有一个或多个参数预先就可以用上,以便函数能用更少的参数进行调用。partial函数就可以实现这样的功能,在使用partial函数前必须调用functools模块。相当于在partial函数里已经指定了一个参数,其余参数在调用函数时再调用就可以了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。