import functools
def get_parameter(html=None): # 工厂函数,用来接受@get_parameter('后端')的'后端'
def log_time(func): # func为被装饰的函数test
print(html) #html参数在任何地方都可被使用
@functools.wraps(func) #此行可有可无
def wrapper(*args, **kwargs):#*args, **kwargs为被装饰的函数传递的参数,也就是r=test('t1')中的't1'
print(args, kwargs)
print('现在开始装饰')
func(*args, **kwargs)
print('现在结束装饰')
# 如果被装饰函数有返回值用下面处理
# result=func(*args, **kwargs)
# # return result
return wrapper
return log_time
@get_parameter('后端')
def test(p):
print('我是被装饰的函数')
print('test中的参数'+p)
return 'test返回结果'
r=test('t1') # test()=make_decorater()
print(r)
运行的结果
后端
('t1',) {}
现在开始装饰
我是被装饰的函数
test中的参数t1
现在结束装饰
None