函数装饰器
一、概述
1、用于管理和增强函数和类行为的代码
2、提供一种在函数或类定义中插入自动运行代码的机制
3、特点
- 更明确的语法
- 更高的代码可维护性
- 更好的一致性
二、
1、使用函数定义装饰器
def p_decorator(func):
def wrapper(*args, **kwargs):
return f'<p>{func(*args, **kwargs)}</p>'
return wrapper
@p_decorator
def get_test():
return 'welcome home'
if __name__ == '__main__':
print(get_test())
2、使用类定义装饰器
class P:
def __init__(self,func):
self.func = func
def __call__(self, *args, **kwargs):
return '<p>'+ self.func(*args, **kwargs) +'</p>'
@P
def get_upper_text(text):
return text.upper()
if __name__ == '__main__':
print(get_test())
print(get_upper_text('qwert'))
3、参数化装饰器
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')
def get_test():
return 'welcome home'
@tags('div')
def get_upper_text(text):
return text.upper()
if __name__ == '__main__':
print(get_test())
print(get_upper_text('qwert'))