python装饰器

发布时间 2023-11-17 14:46:06作者: 测试开发孵化园

装饰器

概念:可以在不修改原来代码的情况下(函数原有的功能或者类原有的功能),为需要被装饰的函数或者类增加新的功能或者添加限制调剂以及帮助输出

常用种类

  • 函数的装饰器
  • 类的装饰器
  • 不管是哪种 类型的装饰器设计模式原则是:开放封闭的原则(对外扩展开发,对内关闭修改)

1.1 装饰器的定义

装饰器的必要构成条件

  • 装饰器本身是一个函数
  • 装饰器的返回值一定是一个函数的引用(函数的名字)
  • 装饰器只能必须一定是只有一个形参
  • 形参是用来接收函数的引用(需要被装饰的函数的名字)

装饰器本质上是一个闭包函数

 1 #装饰器实现登录
 2 def check(func): # func=shopping
 3     def inner():
 4          print("开始进入登录页面")
 5          print("扫码登录")
 6          print("登录成功")
 7          func()   #func=shopping func()=shopping()
 8     return innner
 9 
10 
11 #原有的购物功能
12 def shopping():
13     print("商品加入购物车")
14     print("付款")
15 
16 
17 #原始使用方式:调用装饰器,传递需要被装饰的函数作为实参
18 shopping1=check(shopping)  # 2---3(inner函数不会被执行,但是加载到内存)--8--18
19 #check(shopping)返回结果:shopping1=inner
20 shopping1() #shopping1()=innner() 3-4-5-6-7--12--13--14