美文网首页
python-偏函数

python-偏函数

作者: 小二哥很二 | 来源:发表于2019-11-22 10:31 被阅读0次

    当函数的参数个数太多,需要简化时,可以用偏函数

    from functools import partial
    
    
    def add_sum(*args):
        s = 0
        for n in args:
            s = s + n
        return s
    
    # 偏函数的第二个部分(可变参数),也就是10,按原有的函数的参数顺序进行补充,参数将作用在原函数上
    # 最后偏函数返回了一个新函数
    sum_add_10 = partial(add_sum, 10)
    print(sum_add_10(1, 2))
    print('A____________我们看下原函数add_sum的函数地址入口:')
    print(add_sum)
    print('B______我们看下partial函数返回函数的地址入口:')
    print(partial(add_sum, 10))
    
    结果:
    13
    A____________我们看下原函数add_sum的函数地址入口:
    <function add_sum at 0x00000209F7184620>
    B______我们看下partial函数返回函数的地址入口:
    functools.partial(<function add_sum at 0x00000209F7184620>, 10)
    

    可以看出,我们针对add_sum函数的求和结果,再加上10,或者加10加20,甚至加更多,都是可以通过偏函数来实现的,注意偏函数的第二部分,参数是可变的,是按顺序走的,因此,偏函数产生的新函数,sum_add_10 实际上等同于add_sum(10,*args)

    import functools
     
    int2 = functools.partial(int, base=2)
    # 调用
    int2('10010')  # 二进制
    # 等于
    kw = {'base': 2}
    int('10010', **kw)  # 关键字参数
     
    max2 = functools.partial(max, 10)
    # 调用
    max2(5, 6, 7)
    # 等于
    args = (10, 5, 6, 7)  # 把10作为*args的一部分自动加到左边
    max(*args)  # 可变参数
    
    

    相关文章

      网友评论

          本文标题:python-偏函数

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