用python装饰器打log[python高级教程]

用python 装饰器打log[python高级教程]

#! /usr/bin/env python

# coding=utf-8

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)

return f(*args,**kargs)

def post_logged(f):

def wrapped(*args,**kargs):

now=time()

try:

return f(*args,**kargs)

finally:

log(f,*args,**kargs)

print("time delta:%s"%(time()-now))

return wrapped

try:

#从这里开始调用

return{"pre":pre_logged,"post":post_logged}[when]

except Exception as e:

print(e)

@logged("post")

def hello(name):

print("hello",name)

@logged("post")

def test(a,b=1):

print(a+b)

hello("world")

test(1,2)


以上是 用python装饰器打log[python高级教程] 的全部内容, 来源链接: utcz.com/z/540056.html

回到顶部