python模組 - functools模組

-柚子皮-發表於2014-05-24
http://blog.csdn.net/pipisorry/article/details/26863141

functools模組介紹

functools用於高階函式:指那些作用於函式或者返回其他函式的函式。通常情況下,只要是可以被當做函式呼叫的物件就是這個模組的目標。(The functools module is for higher-order functions: functions that act on or return other functions. In general, any callable object can be treated as a function for the purposes of this module.)

functools.partial函式

partial是針對函式起作用的,並且是部分的,函式中哪些東西可以拆成部分呢?
裝飾器是對函式進行包裝,算是對函式的整體進行處理(其實是對輸入和輸出)。
部分的話其實只有對引數進行部分處理了。怎麼部分處理的呢?
函式的大致意思就是提前給函式繫結幾個引數。
def say(name, age):
    print name, age

func = functools.partial(say, age=5)
func('the5fire')

# 結果是: the5fire 5

場景:有這樣的函式:get_useragent(request) 用來獲取使用者瀏覽器的ua資訊,但是這個函式又不是在主體函式(執行頁面渲染的函式)get時呼叫的,只在模板中的一個filter中呼叫的(可以理解是在模板渲染時呼叫的),而filter在執行的時候是不能新增引數的,要怎麼處理。
def get(self, request, *args, **kwargs):
    context = {
        'ua_filter': functools.partial(get_useragent, **{"request": request})
    }
    self.render('index.html', context)
/* 對應的大致頁面程式碼如下 */
user-agent: {% ua_filter %}
from:http://blog.csdn.net/pipisorry/article/details/26863141
ref:python中functools寶庫下的partial

相關文章