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