柯里化 是把接受多個參數的函數變換成接受一個單一參數(最初函數的第一個參數)的函數,而且返回接受餘下的參數並且返回結果的新函數的技術。函數
fn(x, y) -> fn(x)(y)
它的原理就是,把fn()函數作成嵌套函數,外層函數的返回值是內層函數,這樣,外層函數調用完,返回的是一個函數,而後能接着調用。code
拿最經常使用的add函數來舉例,普通寫法:原理
def add(x,y): return x + y print(add(1,2)) # 輸出:3
def add_currying(x): def _add(y): return x + y return _add print(add_currying(1)(2)) # 輸出:3
也就是說柯里化的過程就是把原來帶兩個參數的函數add_currying
,變成了一個嵌套函數,外層函數仍是_add,可是所帶的參數變成了一個x。而add_currying的返回值就是以原有的第二個參數做爲參數的內層函數_add。currying