# python 无参装饰器
# 计算时间的装饰器
import time
# 3. 调用timer, 这里的x其实就是 copy 函数
def timer(x):
def outter():
start = time.time()
# 4. 这里的x是参数, 等同于执行了 copy()
res = x()
end = time.time()
# 5.这里面计算时间差的功能就是装饰器新家的功能
print(f"耗时{end - start}")
return res
return outter
# 2. 因为装饰器的存在, 调用copy等同于调用(timer(copy))
# 2. 把copy当参数传递给timer
@timer
def copy():
with open('./pwd.txt', mode="r", encoding="utf-8") as f, \
open('./pwd2.txt', mode="w", encoding="utf-8") as f2:
str2 = f.readline()
while (str2):
f2.write(str2)
str2 = f.readline()
# 1.调用copy
copy()
# python 有参装饰器
def wrap1(base):
def wrap2(fn):
def wrap3(*args, **kwargs):
res = fn(*args, **kwargs)
return res * base
return wrap3
return wrap2
@wrap1(base=3)
def add(x, y):
return x + y
res = add(2, 6)
print(res)