装饰器
装饰器是修改其他函数的功能的函数,使程序拥有更明确语法 ,可维护性,更好的一致性。
函数装饰器
以函数的形式实现装饰器功能。
def tags(tag):
def tag_decorator(func):
def wrapper(*args, **kwargs):
return '<{}>{}<{}>'.format(tag, func(*args, **kwargs), tag)
return wrapper
return tag_decorator
def p_decorator(func):
def wrapper(*args, **kwargs):
return '<p>' + func(*args, **kwargs) + '</p>'
return wrapper
def div_decorator(func):
def wrapper(*args, **kwargs):
return '<div>{}<\div>'.format(func(*args, **kwargs))
return wrapper
@p_decorator
def get_text():
return '欢迎光临'
# @p_decorator # 后
# @div_decorator # 先
@tags('p')
def get_upper(text):
return text.upper()
if __name__== '__main__':
print(get_text())
print(get_upper('www.baidu.com'))
类装饰器
以类的形式实现装饰器。
class P:
def __init__(self, func):
self.func = func
def __call__(self, *args, **kwargs):
return '<p>' + self.func(*args, **kwargs) + '<\p>'
@P
def get_text():
return '欢迎光临'
@P
def get_upper(text):
return text.upper()
if __name__== '__main__':
print(get_text())
print(get_upper('www.baidu.com'))