python 无参装饰器和有参装饰器的使用
# 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)
本想把生活活成一首诗, 时而优雅 , 时而豪放 , 结果活成了一首歌 , 时而不靠谱 , 时而不着调