偏函數(partial function)


如果一個函數帶了一些參數,在大部分使用場景中,某個參數的值是固定的,那我們有兩種簡化辦法:

  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的值固定下來。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM