Python装饰器的简单介绍

 时间:2024-10-28 22:16:43

1、普通装饰器普通装饰器可以在执行一个方法的时候,为该方法额外添加一些行为,这个被装饰的方法可以有参数,也可以没有参数,比如下面的计时器装饰器。

Python装饰器的简单介绍

2、我们可以看到这个timer装饰器执行后的返回值是内部函数deco的引用,deco在执行的过程中会为func计时。使用timer装饰器:

Python装饰器的简单介绍

3、test_timer1方法没有参数,test_timer2方法有一个参数。执行被装饰的方法与没有装饰器时是一样的

Python装饰器的简单介绍
Python装饰器的简单介绍

4、处理带返回值的函数时,装饰器没有什么变化,只要在内部函数执行完返回结果即可:

Python装饰器的简单介绍
Python装饰器的简单介绍

5、带参数的装饰器:装饰器本身也是可以带参数的,对于这类装饰器,使用的时候如下:

Python装饰器的简单介绍

6、从上面代码可以看出,使用装饰器的时候是按照“@装饰器名(参数)”的形式完成的,这种形式其实就是方法的执行,也就是引用装饰器的时候就会执行装饰器,所以声明新装饰器的时候,装饰器的参数必须于引用装饰器一致。下面是新的装饰器:

Python装饰器的简单介绍

7、从以上代码可以看出,对于有参数的装饰器,代码书写方式就是在普通装饰器外部再额外嵌套一层,接收的参数可以在任意内部代码中引用。上面代码的执行结果:

Python装饰器的简单介绍

8、补充说明:如果光看代码的话,可能不太好理解装鹘埙沃础饰器,那么我们可以调试一下。当断点放在装饰器引用位置的时候,可以看到代码会进入装饰器内部并返回内部函数:

Python装饰器的简单介绍

9、对于有参数的装饰器,会先调用第一层的内部函数(就是普通装饰器的调用),然后饭后第二层内部函数:

Python装饰器的简单介绍
Python装饰器的简单介绍
  • 怎么推广网站
  • 《王者之剑》魔魂系统详细攻略
  • 怎么清除【喵街】垃圾缓存?
  • 创建微信小程序项目
  • 怎么注册.cn.com域名后缀
  • 热门搜索
    关于文明出行的手抄报 校园手抄报 足球手抄报 五年级数学手抄报内容 法制在我心中手抄报 手抄报内容大全 寻访红色足迹手抄报 勾股定理手抄报 安全上网手抄报 语文手抄报五年级