装饰器
不带参数装饰器
def my_log(func): def wrapper(): log='call%s'.func.__name__ print (log) return func() return wrapper @my_log def check(): print ('now is 10:00:00')
运行结果
>>>f=check() call check now is 10:00:00
被装饰函数带参数传递
def my_log(func): def wrapper(*args,**kw): log='call%s'.func.__name__ print (log) return func(*args,**kw) return wrapper @my_log def check(now): print ('now is %d:00:00'%now)
运行结果
>>>f=check(12) call check now is 12:00:00
当@装饰器后有参数时
def get_parameter(*args,**kwargs): # 工厂函数,用来接受@get_parameter('index.html/')的'index.html/' def log_time(func): def make_decorater(): print(args,kwargs) print('现在开始装饰') func() print('现在结束装饰') return make_decorater return log_time @get_parameter('index.html/') def test(): print('我是被装饰的函数')
>>>test() ('index.html/',) {} 现在开始装饰 我是被装饰的函数 现在结束装饰

浙公网安备 33010602011771号