每天学一点——装饰器

装饰器

 

 

今日内容概要

  • 装饰器的概念
  • 装饰器的简易版本
  • 装饰器的进阶版本

  • 装饰器的练习题(认证功能)

  • 装饰器的固定模板

  • 装饰器的语法糖(简化代码)

  • 有参装饰器(最复杂)

今日内容详细

装饰器的概念

     装饰器不是一个新的概念,而是空间名称,闭包函数等等的组合就是装饰器

 装饰:给函数增加额外的功能

 器:就是工具

装饰器的核心思想:在不改变原有函数的代码情况和原有调用方式的基础上增加额外的功能

def index():
    pass

index()

'''给index函数统计执行时间'''

储备知识:
     time模块
      import time # 模块

1.时间戳,他是执行的这一刻距离1970-1-1的秒数

print(tine.time.())

        2.原地等待三秒

def index():
      time.sleep(3)
      print('from index')

         # 1. 在函数执行之前打印一个时间节点
               start_time = time.time()
               index()

         # 2. 等待函数执行完毕之后,在打印一个时间节点
               end_time = time.time()

         # 3. 总的执行时间就是两个的差值
                print(end_time - start_time)

 装饰器的简易模板

    例:统计函数的执行时间

一定要记住装饰器的核心思想:在不改变原函数的代码情况和原因调用方式的基础上,增加额外的功能。

 

 装饰器的进阶版本(解救函数的传参问题)

 装饰器练习题(认证功能)

调用index函数之前,需要输入用户名和密码,并且用户名和密码必须正确

 

装饰器的固定模板

def outer(func):
       def inner():
               print('函数执行之前要执行的代码')
               res = func()
               print('函数执行之后要执行的代码')
               return res

      return inner

装饰器的语法糖

装饰器语法糖的执行流程:
把语法糖下面紧贴着的函数名当成参数传递给装饰器函数参数

posted @ 2022-01-11 05:32  扶不起的劉阿斗  阅读(28)  评论(0编辑  收藏  举报