Python偏函数partial

Python偏函数partial教程

Python 的偏函数就是将所要承载的 函数 作为 partial() 函数的第一个 参数,原函数的各个参数依次作为 partial() 函数后续的参数,除非使用 关键字参数

Python偏函数作用

当函数的参数个数太多,需要简化时,使用 functools.partial 可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单。

Python偏函数partial详解

语法

from functools import partial partial_func = partial(func, *args, **kwargs)

参数

参数 描述
partial 定义偏函数时,使用的关键字。
func 需要被包装的函数。
args 原始函数 func 的函数参数。
kwargs 原始函数 func 的函数参数。
partial_func 原始函数 func 被包装之后的函数。

说明

我们通过 partial 将原来的函数 func 包装成了 partial_func。

案例

偏函数简化函数

使用 Python 的偏函数,简化函数

from functools import partial print("嗨客网(www.haicoder.net)") def print_info(prefix, info): print(prefix, info) # 使用Python的偏函数,简化函数 print_haicoder = partial(print_info, "haicoder =") print_module = partial(print_info, "module =") print_haicoder("haicoder.net") print_module("Python")

程序运行后,控制台输出如下:

29_python偏函数partial.png

首先,我们定义了一个 print_info 函数,该函数的功能就是将我们需要打印的前缀 prefix 和内容 info ,连接起来。

接着,我们使用 partial 将函数 print_info,封装了一个 print_haicoder 版本,该版本,使用的前缀为 “haicoder =”,接着,我们再次使用 partial 将函数 print_info,封装了一个 print_module 版本,该版本,使用的前缀为 “module =”。

最后,我们可以直接调用,封装过后的函数 print_haicoder 和 print_module,这两个函数的调用比原始的函数更方便,因此我们可以少传递一个参数。

偏函数简化函数

使用 Python 的偏函数,简化函数

from functools import partial print("嗨客网(www.haicoder.net)") def mul(num1, num2): return num1 * num2 # 使用Python的偏函数,简化函数 mul2 = partial(mul, 2) mul4 = partial(mul, 4) res = mul2(512) print("mul2 =", res) res = mul4(512) print("mul4 =", res)

程序运行后,控制台输出如下:

30_python偏函数partial.png

首先,我们定义了一个 mul 函数,该函数的功能就是实现两个参数的乘积。

接着,我们使用 partial 将函数 mul,封装了一个 mul2 版本,该版本,将第一个参数赋值为 2,接着,我们再次使用 partial 将函数 mul,封装了一个 mul4 版本,该版本,将第一个参数赋值为 4。

最后,我们可以直接调用,封装过后的函数 mul2 和 mul4。

Python偏函数partial总结

当函数的参数个数太多,需要简化时,使用 functools.partial 可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单。Python 偏函数 partial 语法:

from functools import partial partial_func = partial(func, *args, **kwargs)