知行编程网知行编程网  2022-11-26 05:00 知行编程网 隐藏边栏  4 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于Python中的偏函数怎么用?的相关知识,包括已知偏导数求原函数,以及偏函数是什么这些编程知识,希望对大家有参考作用。

Python 的 functools 模块提供了很多有用的函数,其中之一就是偏函数(Partial function)。需要注意的是,这里的偏函数与数学意义上的偏函数并不相同。在介绍函数参数的时候,我们提到过通过给参数设置默认值,可以降低函数调用的难度。部分功能可以做同样的事情。举例如下:

如何在 Python 中使用偏函数?

int() 函数可以将字符串转换为整数。当只传入字符串时,int()函数默认按十进制转换:

>>> int('12345')
12345

但是int()函数还额外提供了一个base参数,默认值为10。如果传入base参数,就可以进行N进制转换:

>>> int('12345', base=8)
5349
>>> int('12345', 16)
74565

假设需要转换大量的二进制字符串,每次都传int(x,base=2)很麻烦,于是想到可以定义一个int2()的函数,把base=2传进去默认:

def int2(x, base=2):
  return int(x, base)

这样,我们转换二进制就非常方便了:

>>> int2('1000000')
64
>>> int2('1010101')
85

functools.partial 就是帮我们创建一个偏函数。我们不需要自己定义 int2() 。我们可以直接使用下面的代码来创建一个新的函数int2:

>>> import functools
>>> int2 = functools.partial(int, base=2)
>>> int2('1000000')
64
>>> int2('1010101')
85

所以简单总结一下functools.partial的作用就是固定一个函数的一些参数(也就是设置默认值),返回一个新函数,调用这个新函数会更容易一些。

注意上面的new int2函数只是将base参数重新设置为默认值2,但是你也可以在调用函数的时候传入其他值:

>>> int2('1000000', base=10)
1000000

最后,在创建偏函数时,传入时实际上可以接收三个参数:函数对象、*args和**kw:

int2 = functools.partial(int, base=2)

实际上固定了int()函数的关键字参数base,也就是:

int2('10010')

相当于:

kw = { base: 2 }
int('10010', **kw)

当传入:

max2 = functools.partial(max, 10)

作为 *args 的一部分,实际上会在左边自动添加 10,即:

max2(5, 6, 7)

相当于:

args = (10, 5, 6, 7)
max(*args)

结果为10。


小结

当函数参数过多需要精简时,使用functools.partial创建新函数。这个新函数可以固定原函数的一些参数,更方便调用。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享