摘要:python的設計核心原則就是簡潔——在這種原則的指導下,誕生了lambda表達式和偏函數:兩者都讓函數調用變得簡潔。本文主要爲你介紹偏函數的應用。python
若是咱們定義了一個函數,好比說將四個數相加add(one ,two,three,four),上層有不少函數須要調用這個函數。在這些調用中,80%的調用傳遞的參數都是one=1,two=20,若是咱們每都輸入相同的參數,這樣乏味並且浪費,當然,咱們能夠經過默認參數來解決這個問題;可是若是另外咱們也須要參數是one=2,two=10的狀況呢?因此,咱們須要一種函數,可以將任意數量的參數的函數轉化成帶剩餘參數的函數對象。session
經過上面,咱們大概明白了什麼是偏函數:簡單的說,偏函數就是某一種函數帶有固定參數的實現,因此,咱們須要:函數
1)給偏函數命名spa
2)傳遞固定參數設計
from functools import partial def add(a,b): return a+b p1 = partial(add, 100) p2 = partial(add, 90) print('p1=', p1(99)) print('p2=', p2(30)) ''' 結果: p1=199 p2=120 '''
結合getattr反射code
import functools class RequestContext(object): def __init__(self): self.request = "xxxxx" self.session = "iusdkfjlskdf" obj = RequestContext() # obj.request # obj.session def get_data(name): return getattr(obj,name) request_proxy = functools.partial(get_data,'request') session_proxy = functools.partial(get_data,'session') request = request_proxy() print(request) session = session_proxy() print(session)
結果:
"xxxxx"
"iusdkfjlskdf"