赞
赏
Python 的偏函数就是将所要承载的 函数 作为 partial() 函数的第一个 参数,原函数的各个参数依次作为 partial() 函数后续的参数,除非使用 关键字参数。
当函数的参数个数太多,需要简化时,使用 functools.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")
程序运行后,控制台输出如下:
首先,我们定义了一个 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)
程序运行后,控制台输出如下:
首先,我们定义了一个 mul 函数,该函数的功能就是实现两个参数的乘积。
接着,我们使用 partial 将函数 mul,封装了一个 mul2 版本,该版本,将第一个参数赋值为 2,接着,我们再次使用 partial 将函数 mul,封装了一个 mul4 版本,该版本,将第一个参数赋值为 4。
最后,我们可以直接调用,封装过后的函数 mul2 和 mul4。
当函数的参数个数太多,需要简化时,使用 functools.partial 可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单。Python 偏函数 partial 语法:
from functools import partial
partial_func = partial(func, *args, **kwargs)