#-*- coding:utf-8 -*-
def log(func):
def wrapper(*args,**kw):
print('call %s:()' % func.__name__)
return func(*args,**kw)
return wrapper
@log
def now():
print('2015-08-21')
>>>now.__name__
wrapper
#python 内置的 functools.wraps 可以恢复函数的 __name__
import functools
import time
def log(func):
@functools.wraps(func)
def wrapper(*args,**kw):
print('call %s:()' % func.__name__)
return func(*args,**kw)
return wrapper
@log
def now():
print(`time.time()`)
>>>now.__name__
now
def log(text):
def decorator(func):
@functools.wraps(func):
def wrapper(*args,**kw):
print('%s %s:()' % (text,func.__name__))
return func(*args,**kw)
return wrapper
return decorator
@log('execute')
def now():
print(`time.time()`)
>>>now.__name__
now
转载于:https://my.oschina.net/MrYx3en/blog/495488