zoukankan      html  css  js  c++  java
  • 二十六、装饰器(decorator)

    装饰器

    • 变量作用域

      • 局部作用域

      • 全局作用域

    • 高阶函数

      • 函数名可以作为参数输入

      • 函数名可以作为返回值

    • 闭包

      • 示例代码

        def outer():
           x = 10
           def inner():
               print(x)
           return inner
      • 定义

        如果在一个内部函数里,对在外部作用域(不在大全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure)

      • 说明

        inner是一个内部函数,inner里引用了外部作用域的变量x(x在外部作用域outer里面,但是不是全局作用域),则这个内部函数inner就是一个闭包

    • 装饰器

      • 示例代码

        import time 


        # 实现装饰器类
        def show_time(func):
           def inner(*args, **kwargs):
               start = time.time()
               func(*args,**kwargs)
               end = time.time()
               return end-start
           return inner

        # 系统写法,简洁优雅
        @show_time
        def add_num(a, b):
           return a+b


        # 自定义写法,繁琐不简洁
        def add_num(a,b):
           return a+b
        add_num_run_time = show_time(add_num)
        add_num_run_time()
      • 示例效果

      • 作用

        添加额外的功能

      • 装饰器参数

        • 通过外嵌一个函数实现

        • 示例代码

          import time 

          def logger(flags=False):
             # 实现装饰器类
             def show_time(func):
                 def inner(*args, **kwargs):
                     start = time.time()
                     func(*args,**kwargs)
                     end = time.time()
                     if flags:
                         print("启动记录日志的功能")
                     return end-start
                 return inner
             return show_time

          # 系统写法,简洁优雅
          @logger(True)
          def add_num(a, b):
             return a+b
        • 示例效果

           

  • 相关阅读:
    Python学习之collections module-defaultdict()
    LinkList Operation
    Eng1—English daily notes
    (知识扩展)R运用领域一览表
    TED_Topic3:The hidden reason for poverty the world needs to address now
    Stat3—因子分析(Factor Analysis)
    R3—日期处理
    Stat2—主成分分析(Principal components analysis)
    TED_Topic2:My desperate journey with a human smuggler
    MagicB.0—怎样设置电脑自动关机?
  • 原文地址:https://www.cnblogs.com/nuochengze/p/13286140.html
Copyright © 2011-2022 走看看