网站建设总计,重庆知名网站建设公司,如何查看 网站诊断,html5教程下载百度云1.什么是装饰器#xff1f;
装饰器#xff08;Decorator#xff09;是Python中一种用于修改函数或类的行为的设计模式。装饰器允许您在不修改原始函数或类的情况下#xff0c;给它们添加新的功能#xff0c;这使得代码更具可重用性和可扩展性。简而言之#xff0c;就是一…1.什么是装饰器
装饰器Decorator是Python中一种用于修改函数或类的行为的设计模式。装饰器允许您在不修改原始函数或类的情况下给它们添加新的功能这使得代码更具可重用性和可扩展性。简而言之就是一个返回函数的高阶函数作用就是为其他函数添加附加功能在代码运行的时候动态增加功能的方式。 python装饰器有3类 函数装饰器带参数的装饰器类装饰器 2.闭包
在外函数中定义一个内函数内函数引用外函数的临时变量并且外函数返回的是内函数的引用。这大概就是闭包的含义吧。
我理解pyhton的decorator 本质上就是一个闭包在不改变原有函数的代码和调用情况下实现动态增加原有函数的功能常常用在引用日志函数执行时间事务处理等场景下。
3.和java 注解区别
我理解python装饰器和Java AOP切面更像aop依赖spring框架。 AOP要做的三件事是在哪里切入什么时候切入切入后做什么事. 在哪里切入就是权限校验等非业务操作在哪些业务代码中执行什么时候切入就是业务代码执行前还是执行后切入后做什么事比如做权限校验日志记录等等 4.函数装饰器
函数装饰器是一种用于装饰函数的装饰器。它们以被装饰的函数作为参数并返回一个新的函数通常是内部函数
def decorator_func(func):def wrapper():print(函数执行前操作)func()print(函数执行后操作)return wrapper
decorator_func
def test_func():print(******我是执行函数我做了很多逻辑处理!******)
if __name__ __main__:test_func() 说明
函数装饰器使用内部函数来包装被装饰的函数并返回一个新的函数装饰器可以在被装饰之前之后执行传入的函数这样提供了一些额外的动态功能使用decorator_func 来装饰函数这样该函数就可以进行优美的执行。
5.带有参数的装饰器
带有参数的装饰器可以在定义装饰器上传递多个参数。
def decorator_agrs(name, age):def decorator_func(func):def wrapper(*agrs, **agrs2):print(姓名, name, 年龄, age)func(*agrs, **agrs2)print(函数执行后年龄太大了)return wrapperreturn decorator_func
decorator_agrs(吴刚, 19)
def test_func(name):print(我的名字是, name)
if __name__ __main__:test_func(嫦娥) 这种定义了一个装饰工厂函数decorator_agrs他接受2个参数name和age返回一个装饰器函数decorator_func 然后使用装饰器函数进行使用。
6.装饰器类
类装饰器字面意思就是装饰类的可以将类作为参数返回一个新的类。
class DecoratorClass:def __init__(self, cls):self.cls clsdef __call__(self, *args, **kwargs):print(出门打扮, args[0])obj self.cls(*args, **kwargs)print(回家休息)return obj
DecoratorClass
class TestClass:def __init__(self, name):self.name namedef shopping(self):print(fHello, {self.name}!)
if __name__ __main__:obj TestClass(嫦娥)obj.shopping() 说明
类装饰器使用__init__()方法接受被装饰的类使用__call__()返回一个新的类在实例化被装饰的类之前和之后执行动态代码使用DecoratorClass 将装饰器应用于类。