1. 程式人生 > >測開之函式進階· 第5篇《偏函式》

測開之函式進階· 第5篇《偏函式》

## 什麼是偏函式 偏函式在`functools`的模組裡有個`partial`,這個東西就叫做偏函式。 ## 怎麼用偏函式? **當函式的引數個數太多,需要簡化時,使用 functools.partial 可以建立一個新的函式,這個新函式可固定住原函式的部分引數,從而在呼叫時更簡單。** 偏函式可以幫我們固定引數,簡化引數呼叫的流程。如果當前有個介面,去呼叫這個介面的時候,這個介面需要傳 50 個引數,你發現前面 49 個引數都是一樣的不會變化的,這 49 個引數設定成必須要傳的引數,只有一個變化的引數,呼叫的時候非常不方便。 偏函式可以將前面 49 個引數固定住,再次呼叫的時候只需要傳一個引數(只需傳那個變化的引數)。 之前學到的內建函式中`filter`中,呼叫的時候需要傳入 2 個引數,第一個是函式,第二個是需要過濾的可迭代型別的資料。 ```PYTHON # 可以通過傳入不同的過濾條件去過濾出來我們需要的資料 filter(lambda x:x>3,li) filter(lambda x:x>5,li) ``` 用偏函式,程式碼可以這樣寫: ```PYTHON from functools import partial # 過濾掉小於5的資料,大於5的資料全部保留下來了 li1 = [1, 2, 3, 11, 22, 33] li2 = [1, 2, 3, 11, 22, 33] li3 = [1, 2, 3, 11, 22, 33] li4 = [1, 2, 3, 11, 22, 33] li5 = [1, 2, 3, 11, 22, 33] li6 = [1, 2, 3, 11, 22, 33] li7 = [1, 2, 3, 11, 22, 33] # 之前的寫法 # filter(lambda x:x>5,li) # filter(lambda x:x>5,li2) # filter(lambda x:x>5,li3) # filter(lambda x:x>5,li4) #那麼這個時候每次都要傳入同樣的引數,比較麻煩。 #通過偏函式建立一個新函式,提前傳入原函式所需要的引數,呼叫的時候更簡單。 li = [1, 2, 122, 331, 11, 22, 33, 4, 6, 7, 2, 88, 31] filter2 = partial(filter, lambda x: x > 5) res=filter2(li) print(list(res)) res2=filter2(li2) print(list(res2)) ``` 看`functools`的原始碼: ![](https://gitee.com/qinghanstudy/qinghan/raw/master/img/20201228142652.png) 它的意思是不定行引數(隨便多少引數都可以)。 ![](https://gitee.com/qinghanstudy/qinghan/raw/master/img/20201228143014.png) - **鄭重宣告**:公眾號“清菡軟體測試”首發,更多原創文章:清菡軟體測試 114+原創文章,歡迎關注、交流,禁止第三方未經同意擅自轉載。 ## 熱文精選 - [我膨脹了,測試必要商城小程式,用了 3 種方式!:)](https://mp.weixin.qq.com/s/vOUangCmD8xowDJIBMMbXg) - [Appium 之測試微信小程式](https://mp.weixin.qq.com/s/3VNXSJ-Xx7II3upfbtkVXQ) - [Appium 上下文和 H5 測試(二)](https://mp.weixin.qq.com/s/tedriSZ1LXEXOW8S4LD9Iw) - [Appium 上下文和 H5 測試(一)](https://mp.weixin.qq.com/s/_l0_CvKn2H4rYnIqiMt87g) - [從 0 開始用 Hexo 框架搭建個人部落格(無坑版)](https://mp.weixin.qq.com/s/MRMgDJVYKX6GP74eyTD8vQ) - [Appium 常用操作之「Toast 提示資訊獲取」](https://mp.weixin.qq.com/s/BFcTxsXb78MpuK40J6VjYQ) - [放假整理的四個知識,附帶小工具](https://mp.weixin.qq.com/s/cLbKoGWNu1lcGWTA1bQ2vA) - [Appium 常用操作之「元素定位、swipe 滑屏操作」](https://mp.weixin.qq.com/s/laI3KeE2d6Vmlo3UcBDr7w) - [舉個華為計算器的栗子「Appium 環境配置與除錯 ​」](https://mp.weixin.qq.com/s/vDLnrW1NbJKqi5PbumLzVQ) - [Jenkins 持續整合「編譯打包、程式碼檢查、單元測試、環境部署、軟體測試 ​」](https://mp.weixin.qq.com/s/hnKH2JFxStm0rI10