python装饰器

85 阅读1分钟

装饰器(Decorators)是 Python 中的一个高级功能,它允许你修改或增强函数、方法或类的行为。装饰器本质上是一个接受函数作为参数的可调用对象(通常是一个函数),并返回一个新的函数。

  1. 装饰器,语法:@装饰器名类。
def outer(func):
    def inner():
        print("我要睡觉了")
        func()
        print("我睡醒了")

    return inner


# 语法糖@outer,本质就是将装饰的方法传给outer内处理
@outer
def sleep():
    import random
    import time
    print("睡眠中.........")
    time.sleep(random.randint(1, 5))

sleep()
  1. 原理,使用了一个闭包,返回一个新的函数,将需要执行的函数放到这个闭包函数中。
def outer(func):
   def inner():
       print("我要睡觉了")
       func()
       print("我睡醒了")

   return inner


def sleep():
   import random
   import time
   print("睡眠中.........")
   # random.randint(1, 5) 表示从1-5中返回一个随机整数
   # time.sleep() 让程序睡眠一段时间, 需要传一个int类型
   time.sleep(random.randint(1, 5))


fn = outer(sleep)
fn()