装饰器 | 白月黑羽

嵌套函数实现计时器功能

import time

def timer(func):
    
    def inner():
        print("inner run")
        start = time.time()
        func()
        end = time.time()
        print("{} 函数运行用时{:.2f}秒".format(func.__name__, (end-start)))
    
    return inner

def f1():
    print("f1 run")
    time.sleep(1)

f1 = timer(f1)             # 包含inner()和timer的环境,如传递过来的参数func
f1()

语法糖

import time

def timer(func):
    
    def inner():
        print("inner run")
        start = time.time()
        func()
        end = time.time()
        print("{} 函数运行用时{:.2f}秒".format(func.__name__, (end-start)))
    
    return inner

@timer                      # 相当于实现了f1 = timer(f1)
def f1():
    print("f1 run")
    time.sleep(1)
    
    
f1()

高级功能

<aside> 💡

一装饰就执行,不必等调用

</aside>