TOC

什么是装饰器语法糖

装饰器语法糖属于装饰器的

注意:在使用装饰器语法糖时,装饰器必须定义在被装饰对象之上

import time


# 统计函数执行时间装饰器
def wrapper(func):  # 被装饰对象
    def inner(*args, **kwargs):  # 被装饰对象的参数
        # 调用前增加新功能
        start_time = time.time()
        # 调用被装饰对象,并接收返回值
        res = func(*args, **kwargs)

        # 调用后添加新功能
        end_time = time.time()
        print(end_time - start_time)

        return res
    return inner


# func函数需要执行3秒

# 无参装饰器
# 使用装饰器
@wrapper  # wrapper(func)  ---> func
def func():

    time.sleep(3)


# 不用装饰器
def func2():
    time.sleep(3)

func()

计算程序的运行时间(利用函数的语法糖)

import time


def time_timer(func):
    def inner():
        start_time = time.time()
        res = func()
        end_time = time.time()
        print(f'消耗了:{end_time - start_time}')
        return res
    return inner


@time_timer

def download_movie():
    print('开始下载电影...')
    time.sleep(3)
    print('下载完毕...')
    return '小泽.mp4'


download_movie()
01-05 13:09