诚意
诚意如你,当一诚的态度对待

导航

 

一:介绍偏函数

 

functools.partial的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。

 

二:偏函数的使用:

1:

通过设定参数的默认值,可以降低函数调用的难度。而偏函数也可以做到这一点。举例如下:

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

 

 

2:

from functools import partial

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

par_ab = partial(ab,1,2)
print(par_ab)  #functools.partial(<function ab at 0x0000017EBDE51E18>, 1, 2)
print(par_ab()) #3

 

from functools import partial

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

par_ab = partial(ab,1,2,3,4,5,5)
print(par_ab)  #functools.partial(<function ab at 0x000001DC7BA91E18>, 1, 2, 3, 4, 5, 5)
print(par_ab()) #报错

 

posted on 2019-01-10 17:44  诚意  阅读(186)  评论(0)    收藏  举报