最近在学习廖雪峰老师的Python教程,受益匪浅。接下来写一下学习总结,以便可以随时翻阅。
def get(path):
def wrapper(func):
func.__route__ = path
func.__method__ = 'GET'
return func
return wrapper
@get('/')
def home():
print 'home'
@get('/login')
def login(user, password):
print 'login : %s %s'%(user, password)
funcs = [home, login]
for f in funcs:
print f.__route__, f.__method__
home()
login('test', '123')
首先,这个是带参数的装饰器,参数为请求的路径。
然后,在装饰器中加入的两个属性,是在定义了函数后就已经加入到函数中了,即使函数并没有被调用执行。
最简单的装饰器可以写成这样:
def decorator(func):
print 'decorator'
return func
@decorator
def func1():
print 'func1'
执行后,输出
>>>decorator
上例中的装饰器是无参装饰器,文章开始的例子是有参装饰器。区别在于,有参装饰器比无参装饰器多封装一层。