当前位置: 首页 > 图灵资讯 > 行业资讯> python偏函数是什么?怎么用?

python偏函数是什么?怎么用?

来源:图灵python
时间: 2024-12-15 20:21:45

偏函数?相信很多小伙伴看到这个内容,脑海中会是一头雾水,想想自己所学的内容,好像关于偏函数的少之又少,那对于这么不常见的内容,我们要怎么去理解呢?小编就帮大家整理了有关偏函数的所有精华内容集锦,具体内容如下哦~

偏函数 partial 应用

函数在执行时,要带上所有必要的参数进行调用。但是,有时参数可以在函数被调用之前提前获知。这种情况下,一个函数有一个或多个参数预先就能用上,以便函数能用更少的参数进行调用。

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

举一个常见的例子来说明:

我们实现了一个取余函数,对于整数 100,取得对于不同数 m 的 100%m 的余数。

fromfunctoolsimportpartial

defmod(n,m):
returnn%m

mod_by_100=partial(mod,100)

printmod(100,7)#2
printmod_by_100(7)#2

下面再看一个例子,讲的是如何进行不同的进制转换。

fromfunctoolsimportpartial

bin2dec=partial(int,base=2)
printbin2dec('0b10001')#17
printbin2dec('10001')#17

hex2dec=partial(int,base=16)
printhex2dec('0x67')#103
printhex2dec('67')#103

关于偏函数,可以对现有函数进行加强。

>>>importfunctools
>>>int2=functools.partial(int,base=2)#把int的转换设为二进制了,这里base是int函数表示进制的参数。
>>>int2('1000000')
64

>>>int2('1010101')
85

在重设之后, 也可以在函数调用时传入其他值:

>>>int2('1000000',base=10)#这里base变成了10,覆盖了已设的默认值2。
1000000

注意这里在创建新的偏函数后,依旧可以更改已经设置的默认值,但是必须清晰指出是更改了 base 的值。

否则如果直接传如一个数值会报错:

int2('100',10)#报错,10前未加base=,不能分辨这是传给base的

原因如下:

创建偏函数时,实际上可以接收函数对象、*args 和 **kw 这 3 个参数,当传入:

int2=functools.partial(int,base=2)#int是函数对象,base=2是**kw,没有传入*args参数

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

int2('10010')

相当于:

kw={'base':2}
int('10010',**kw)#如果不指明base=2而只是传入2的话,那么2被认为是*args的值

当传入:

max2=functools.partial(max,10)#这里的10显然就是作为*args里的值传入的

实际上会把 10 作为 *args 的一部分自动加到参数列表里去,也就是:

max2(5,6,7)#原本有*args的列表,然后会把10再加进去

相当于:

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

结果为10。

以上就是关于python的偏函数的用法,如需了解更多python实用知识,点击进入PyThon学习网教学中心