python装饰器 -1

目录

  • 什么是装饰器
        • `set_func(test1)` 等价于 `@set_func`

什么是装饰器

def set_func(func):
    def call_func():
        print("----1-----")
        func()
    return call_func


def test1():
    print("-----test1-----")


ret = set_func(test1)
ret()

执行步骤 :

  1. 程序从上往下执行, 定义了一个set_func函数, 并没有进去执行.
  2. 继续执行, 又定义了一个函数, test1(), 也没有进去执行
  3. 调用set_func, 调用的时候是带着test1函数的引用过去的.
  4. set_func用的是func这个变量来接收参数. 所以func指向了test1函数的引用
  5. 继续执行, 又定义了一个函数, 使用call_func指向它, 不进去执行
  6. 返回了call_func()函数的引用, 相当于ret指向了call_func()函数.

set_func(test1) 等价于 @set_func

@set_func
def test1():
    print("-----test1-----")


test1()

你可能感兴趣的:(python装饰器-,python,装饰器)