這個概念說實話以前聽過,但沒深究過,也沒用到過…但是被人問到了,就查來記錄一下,
查下資料,發現這個東西說白了就是:部分引數有默認值的函式,Orz,再回過頭來看他的英文名字,partial function application,emm,可以理解了,至于中文的偏是怎么來的,我也不知道,
再看官方的定義:
作用是在函式呼叫前,預先固定引數的方法,
為什么發明這個東西?
- 少傳引數
- 更短
- 更簡潔
說白了都是一個事情……
那么先看一下,如果我們自己要實作這個功能,會怎么搞?
看下面這個例子
In [105]: def test(x, y):
...: return x*y
...:
...:
In [106]: test(2, 3)
Out[106]: 6
In [107]: def test(x, y=2):
...: return x*y
...:
In [108]: test(2)
Out[108]: 4
很簡單,對不?
那有沒有現成的辦法呢?當然有,那就是functools庫
In [109]: from functools import partial
In [110]: def test(x, y):
...: return x*y
...:
In [111]: new_test = partial(test, y=3)
In [112]: new_test(3)
Out[112]: 9
就這么一個小東西…
那么他有其他的好處么?
有,復用性更強了,
比方說如果想把y默認值再改成4,不用自己再去些一個 def test(x, y=4),可以直接宣告一個繼續用了,
參考:
https://www.liaoxuefeng.com/wiki/1016959663602400/1017454145929440
https://www.jianshu.com/p/80e07a4728e4
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/115640.html
標籤:Python
上一篇:Python的閉包是什么意思?
