函数定义装饰器
def p_decorator(func):
def wrapper(*args, **kwargs):
return '<p>' + func(*args, **kwargs) + '<p>'
return wrapper
@p_decorator
def get_text():
return '优品课堂'
@p_decorator
def get_upper_text(text):
return text.upper()
if __name__ == '__main__':
print(get_text())
print(get_upper_text('www.abc.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(text):
return text.upper()
if __name__ == '__main__':
print(get_text())
print(get_upper_text('www.abc.com'))
参数化装饰器
def tags(tag):
def tag_decorator(func):
def wrapper(*args, **kwargs):
return f'<{tag}>{func(*args, **kwargs)}</{tag}>'
return wrapper
return tag_decorator
@tags('div')
@tags('p')
def get_text():
return '优品课堂'
@tags('div')
@tags('p')
def get_upper_text(text):
return text.upper()
if __name__ == '__main__':
print(get_text())
print(get_upper_text('www.abc.com'))