在使用函式的時候,偶爾會遇到這種情況:某個函式帶 n 個引數,但在重複使用的過程中,實際只有其中少數幾個引數會不同,其他引數的值都是一樣的。那麼如何可以在多次使用這種函式時,減少輸入重複引數的次數或乾脆避免輸入這些引數呢?
答案之一是使用預設引數。拿我們常用的 int() 函式舉例,當我們使用 help() 檢視該函式時,可以看到它的使用說明是醬紫的:
int(x=0) –> integer
int(x, base=10) –> integer
可見 int() 函式有乙個用法是可以設定傳遞進來的字串引數 x 的進製,而且其值預設為 10(當設定了base引數時,x 必須是基於 base 進製的字串) 。這就避免了我們重複輸入,而且 base = 10 確實是最常用的乙個值。但,如果在某個情景下我們需要 base = 2 呢?也許我們可以這樣重新包裝乙個函式 basetwo(本函式不對輸入做檢查,全權交給 int() 來做):
def basetwo(x):
return int(x,base=2)
>>> int('10010',base=2)
>>> basetwo('10010')
看起來沒錯,不過 python 有更簡單直觀的實現路徑,就是本篇的主題:偏函式應用(pfa)。這種函式可以固化乙個多參函式的若干引數,並返回帶有剩餘引數的函式物件,聽起來就像數學裡的偏函式。它也可以被看作是柯里化(currying)的一種泛化形式。它通過 functools 模組下的 partial() 函式來實現。該函式的用法是這樣的:
partial(func, *args, **keywords) # *args代表非關鍵字引數,**keywords代表關鍵字引數,不過為了避免出錯,除非你明確知道 func 函式的引數順序,否則應該盡量使用關鍵字引數
使用 partial() 來寫上面的栗子是這樣的:
from functools import partial
basetwo = partial(int,base=2)
>>> basetwo('10010')
python 偏函式 python 偏函式
functools.partial可以設定預設引數和關鍵字引數的預設值 python的functools模組提供了很多有用的功能,其中乙個就是偏函式 partial function 要注意,這裡的偏函式和數學意義上的偏函式不一樣。在介紹函式引數的時候,我們講到,通過設定引數的預設值,可以降低函式呼...
li函式在python python 函式
1.概念 由若干條語句組成的語句塊,他的組織 是 的最小單元 完成一定的功能 2.作用 最基本的封裝,按照功能組織一段 可以復用,減少 量 簡潔美觀,更易懂 3.函式的分類 內建函式 max 庫函式 match.ceil 自定義函式 使用def關鍵字定義 4.定義 函式名縮排 return 沒有預設...
python偏函式和高階函式 高階函式與偏函式
今天主要在這裡仔細說明一下高階函式與偏函式的知識。高階函式 在絕大多數通常的計算機語言裡,函式的引數只接受基本的資料型別或是物件的引用,返回值也只是基本資料型別或者物件引用。示例如下 function test1 else return function console.log 資料不符合規範,錯誤...