functools.partial偏函数的使用

https://docs.python.org/3.6/library/functools.html

从名字可以看出,该函数的作用就是部分使用某个函数,即冻结住某个函数的某些参数,让它们保证为某个值,并生成一个可调用的新函数对象,这样你就能够直接调用该新对象,并且仅用使用很少的参数

该参数源码:

def partial(func, *args, **keywords):
    def newfunc(*fargs, **fkeywords):
        newkeywords = keywords.copy()
        newkeywords.update(fkeywords)
        return func(*args, *fargs, **newkeywords)
    newfunc.func = func
    newfunc.args = args
    newfunc.keywords = keywords
    return newfunc

 

举个简单例子:

>>> from functools import partial
>>> baseTwo = partial(int, base=2) #实现将二进制字符串转成int整型
>>> baseTwo('10010')
18
>>> int('10010')
10010

等价于:

>>> int('10010', base=2)
18

这里实现的就是部分使用int()函数,一般来说我们使用int()函数是将10进制的字符串转为整型

如果我们想要让其实现将2进制的字符串转为整型,就是传入参数base=2,但是不想每次运行的时候都要传入该参数base,做法就是使用partial冻结其base参数值为2,然后返回一个新的函数对象。然后就调用该对象即可

上一篇:Python报错:NameError: name 'reduce' is not defined


下一篇:javax.mail用smtp服务器发送带附件的邮件