玩蛇网提供最新Python编程技术信息以及Python资源下载!

Python装饰器日志方法的简单实现

'''
Created on 2011-3-23
www.iplaypy.com

'''
from time import time

def logged (when):
    def log(f,*args,**kargs):
        print('''called: 
        function: %s 
        args :%r 
        kargs:%r''' %(f,args,kargs))
        
    def pre_logged(f):
        def wrapper(*args,**kargs):
            log(f,*args,**kargs)
            print('in pre_logged')
            return f(*args,**kargs)
        return wrapper
    
    def post_logged(f):
        def wrapper(*args,**kargs):
            print('in post_logged *')
            now =time()
            try:
                return f(*args,**kargs)
            finally:
                log(f,*args,**kargs)
                print('time delta: %s' % (time()-now))
                print('in post_logged')
        return wrapper
    
    try:
        return {"pre":pre_logged,"post":post_logged}[when]
    except KeyError as e:
        raise ValueError(e)('must be "pre" or "post" ')
    
@logged('pre')    
@logged('post')
def hello(name):
    print('hello, ',name)


hello('world!')

玩蛇网文章,转载请注明出处和文章网址:http://www.iplaypy.com/code/other/o2487.html [复制]



我要小额赞助,鼓励作者写出更好的教程↓↓↓

玩蛇网Python QQ群,欢迎加入: ① 279974227 玩蛇网Python新手群
修订日期:2016年03月30日 - 11时41分51秒 发布自玩蛇网

我要分享到:
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
相关文章推荐
别人正在看
特别推荐
站长推荐:
去顶部去底部