Python装饰器是一种特殊的函数,用于修改其他函数的功能。装饰器可以在不改变原函数代码的情况下,对函数进行增加、修改或者扩展功能。
装饰器的语法形式是在函数定义前使用@符号,并在 @ 后面加上装饰器的名称。装饰器函数接受被装饰函数作为参数,并返回一个修改后的函数。
import random
import time
datas = [random.randint(0, 10000) for i in range(10000)]
# 通过浅拷贝 得到内容一模一样的列表
datas_copy = datas.copy()
# def my_fun1():
# start = time.time()
# datas.sort()
# print(datas)
# print("my_fun1", time.time()-start)
#
# my_fun1()
#
# def my_fun2():
# start = time.time()
# new_list = sorted(datas_copy)
# print(new_list)
# print(f"my_fun2", time.time()-start)
#
# my_fun2()
# 不改变两个函数原本的实现 给函数添加时间开销的功能
# 1. 外部函数嵌套内部函数 2. 外部函数返回内部函数 3.内部函数访问外部函数局部变量
def time_cost(f):
def calc():
start = time.time()
f()
print(f"结束执行: {f.__name__} 消耗时间 {time.time()-start}")
return calc
@time_cost
def fun1():
datas.sort()
print(datas)
# fun1 = time_cost(fun1)
fun1()
# fun1()
@time_cost
def fun2():
new_datas = sorted(datas_copy)
print(new_datas)
# fun2 = time_cost(fun2)
fun2()
# fun2()
标签:fun1,函数,fun2,Python,案例,详解,time,print,datas
From: https://blog.csdn.net/zhangzhaoyuxunlei/article/details/140605886