python帶參數和不帶參數裝飾器,python帶參數裝飾
http://blog.csdn.net/pipisorry/article/details/41902599
對於無參數的裝飾器,其裝飾器函數的參數是要被裝飾的函數對象名;
對於有參數的裝飾器在調用時使用的是應用的參數,@timeStumpFunc_args(argv)的argv,已不再是要被裝飾的函數對象名,所以必須在內部再定義一個函數getfunc()來接收要被裝飾的函數對象。
#!/usr/bin/env python# coding=gbk"""__title__ = '帶參數和不帶參數的timeStump'__author__ = 'pi'__mtime__ = '2014.12.12'"""from time import ctimedef timeStumpFunc(func): """time stump decorator of func 不帶參數的時間戳記函數""" def wrappedFunc(*nkw): print("start_time %s" % ctime()) func(*nkw) print("end_time %s" % ctime()) return wrappedFuncdef timeStumpFunc_args(args): """time stump decorator of func 不帶參數的時間戳記函數""" print "timeStump for function %s" % args def getFunc(func): def wrappedFunc(*nkw): print("start_time %s" % ctime()) func(*nkw) print("end_time %s" % ctime()) return wrappedFunc return getFunc@timeStumpFunc# @timeStumpFunc_args('do_sth')def do_sth(*nkw): print "%s" % nkwif __name__ == '__main__': do_sth('i you love')
from:http://blog.csdn.net/pipisorry/article/details/41902599
ref:Python裝飾器:簡單裝飾,帶參數裝飾與類裝飾器
http://outofmemory.cn/code-snippet/1107/python-achieve-carry-parameter-decorator