码迷,mamicode.com
首页 > 编程语言 > 详细

python带参数和不带参数装饰器

时间:2014-12-13 01:00:25      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:python   function   

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 ctime


def timeStumpFunc(func):
    """time stump decorator of func 不带参数的时间戳函数"""

    def wrappedFunc(*nkw):
        print("start_time %s" % ctime())
        func(*nkw)
        print("end_time %s" % ctime())

    return wrappedFunc


def 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" % nkw


if __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


python带参数和不带参数装饰器

标签:python   function   

原文地址:http://blog.csdn.net/pipisorry/article/details/41902599

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!