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

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

python 培训
'''
Created on 2011-3-23
www.iplaypython.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.iplaypython.com/code/other/o2487.html



微信公众号搜索"玩蛇网Python之家"加关注,每日最新的Python资讯、图文视频教程可以让你一手全掌握。强烈推荐关注!

微信扫描下图可直接关注

玩蛇网Python新手QQ群,欢迎加入: ① 240764603 玩蛇网Python新手群
文章发布日期:2016-03-30 11:41 玩蛇网 www.iplaypython.com

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