functools.partial

函數式編程的思想。
可以理解成綁定了一部分參數的函數。
作用就是少傳參數,更短,更簡潔。
我之前做的一段用戶留存率的程序。
需求是這樣子的,選擇某一天,然後以這天爲準,次日留存,3日留存,7日留存,14日留存,30日留存。
已有一個獲取第幾天後的函數
  1. from datetime import datetime,timedelta  
  2. def GetNextDay(baseday,n):  
  3.     return str((datetime.strptime(str(baseday),'%Y-%m-%d')+timedelta(days=n)).date())  
>>GetNextDay('2013-07-31',2)
'2013-08-02'
按照常規做法,要獲取這些“x日留存”的日期,需要
  1. GetNextDay(selected_day,1)  
  2. GetNextDay(selected_day,2)  
  3. GetNextDay(selected_day,6)  
  4. GetNextDay(selected_day,13)  
  5. GetNextDay(selected_day,29)  
可以看到,第一個參數都是一樣的, 一些東西如果是一樣的,往往意味着可以簡化,就跟之前博文的itemgetter一樣。
這時候偏函數派上用途了。
  1. import functools  
  2. nday = functools.partial(GetNextDay,selected_day)  
這樣上面的的代碼就可以簡化成下面這樣了。
  1. nday(1)  
  2. nday(2)  
  3. nday(6)  
  4. nday(13)  
  5. nday(29)  
原文鏈接:http://blog.csdn.net/handsomekang/article/details/9712125

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章