美文网首页
偏函数partial

偏函数partial

作者: MononokeHime | 来源:发表于2018-09-04 19:50 被阅读0次

Python的内置模块functiontools为解决实际问题提供了便捷的方法,如下所示

__all__ = ['update_wrapper', 'wraps', 'WRAPPER_ASSIGNMENTS', 'WRAPPER_UPDATES',
           'total_ordering', 'cmp_to_key', 'lru_cache', 'reduce', 'partial',
           'partialmethod', 'singledispatch']

其中lru_cachesingledispatchwraps在《流畅的Python》中有具体介绍,这里只介绍偏函数partial

偏函数partial

当一个函数有很多参数时,调用者就需要提供多个参数。如果减少参数个数,就可以简化调用者的负担。

比如,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可以把一个参数多的函数变成一个参数少的新函数,少的参数需要在创建时指定默认值,这样,新函数调用的难度就降低了。

相关文章

  • 偏函数partial

    Python的内置模块functiontools为解决实际问题提供了便捷的方法,如下所示 其中lru_cache,...

  • Python 偏函数 partial

    偏函数是通过将一个函数的部分参数预先绑定为某些值,从而得到一个新的具有较少可变参数的函数。 Reproduce f...

  • Scala学习笔记(六) Scala的偏函数和偏应用函数

    1. 偏函数 偏函数(Partial Function),是一个数学概念它不是"函数"的一种, 它跟函数是平行的概...

  • 偏函数

    偏函数作用 Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial func...

  • 偏函数functools.partial

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

  • 『JavaScript专题』偏函数

    定义 维基百科中对偏函数 (Partial application) 的定义为: In computer scie...

  • 【Python】笔记12(偏函数、模块)

    偏函数(partial func'),基于functools这一模块,对模块中已有函数的默认参数进行改变,形成新的...

  • Python模块--functools工具函数包

    functools工具函数包 partial函数(偏函数) 把一个函数的某些参数设置默认值,返回一个新的函数,调用...

  • Python基础《 持续更新 》

    常用语法点 1. functools.partial: 作用:创建偏函数用法:简单使用 int()函数还提供额外的...

  • Python偏函数

    functools模块提供了偏函数功能,即functools.partial。它可以把函数的某些属性设置为默认值,...

网友评论

      本文标题:偏函数partial

      本文链接:https://www.haomeiwen.com/subject/poynwftx.html