装饰器(本质上是闭包)
多个装饰器一起使用时,由内到外执行顺序: 外层装饰器(内存装饰器(目标函数))
通用装饰器:
#定义python 通用装饰器
def decorator(func):
def inner(*args,**kwargs):
"""装饰内容"""
content = func(*args,**kwargs) #执行目标函数
"""装饰内容"""
return content #无返回值时为None
return inner
@decorator
def target(不定参数):
pass
#执行的target()函数其实是执行装饰器内的inner函数
target(不定参数)
带参数的装饰器:
def return_decorator(参数):
def decorator(func):
def inner(*args,**kwargs):
"""使用参数,装饰内容"""
content = func(*args,**kwargs) #执行目标函数
"""装饰内容"""
return content #无返回值时为None
return inner
return decorator
@return_decorator(参数)
def target(不定参数):
pass
#执行的target()函数其实是执行装饰器内的inner函数
target(不定参数)
类装饰器
class mydecorator(object):
def __init__(self,func):
self.__func = func
#实现__call__方法,让实例对象变成可调用的对象,可调用的对象可以像调用函数一样调用
def __call__(self,*args,**kwargs):
"""装饰内容"""
self.__func()
@mydecorator
def target():
pass
target()
本文深入探讨了Python装饰器的概念,包括其本质——闭包,以及如何创建和使用装饰器。首先,介绍了基本的无参数装饰器,然后讲解了如何创建带参数的装饰器,最后阐述了类装饰器的实现方式。通过实例展示了装饰器如何包装和增强函数的功能,以及在实际编程中的应用场景。
351

被折叠的 条评论
为什么被折叠?



