借用裝飾器,我們可以批量的對老的函數進行改造或擴展老函數功能,比如需要對函數的接收參數進行過濾,Flash的url路由功能就是使用的這個方式
def dropoushu(): # 這一層函數可以去掉,如果去掉了,則使用@checkjiou這種方式調用該裝飾器def checkjiou(func):def wrapper(*args):tmp_list = args[0]result_list = [i for i in tmp_list if i%2 ==0] # 對calculate函數的入參list中的奇數過濾掉return func(*tuple([result_list])) # result_list=[0, 2, 4, 6]return wrapperreturn checkjiou@dropoushu() def calculate(a_list):print a_list # [0, 2, 4, 6]if __name__ == "__main__":calculate([i for i in range(7)]) # 此處的數據應該是[0, 1, 2, 3, 4, 5, 6]
?