菜鸟lei的学习成长空间

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

如果一个函数带了一些参数,在大部分使用场景中,某个参数的值是固定的,那我们有两种简化办法:

  1. 参数默认值
    即在原始函数定义的地方,对应参数处设置paramx=default。

    但是有一点不好,如果paramx设置了默认值,这个参数之后的其他参数也要跟着设置默认值。

    整体而言,对原有函数有改动。

  2. 偏函数
    使用functools.partial(original_fuc,param1,param....)在原有函数基础上生成一个偏函数。

    所谓偏函数,就是以原函数为基础,将某个位置上的参数固定住(默认是从第一个参数固定),后续参数重新扩展传递给原函数,对外则是生成一个新函数。

    比如:

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

    这是两数相加的函数,现在我们要用一个函数,输入一个参数,返回这个参数+5的结果。

    参数默认值的方法可以这样写:

    def add(a,b=5):
        return a+b
    

    但原函数本来就是两数相加,即使现在可能一个参数+5的场景用的多,给被加数给个默认值5,也是很突兀的写法。

    我们也可以新写一个函数:

    def add5(a):
        return a+5
    

    这样新创建一个函数,倒也没什么,但是对原有add函数复用不高。

    使用偏函数可以这样写:

    import functools
    add5 = functools.partial(add, b=5)
    
    #test add5
    ret = add5(10)
    print(ret)
    

    通过partial中b=5,将参数b的值固定下来。

posted on 2021-12-13 23:13  菜鸟-雷  阅读(1429)  评论(0编辑  收藏  举报