'''加强练习:1.请实现一个装饰器,通过一次调用势函数重复执行五次思路:原函数--->不改变原函数代码的情况下--->输出5次
'''class loop_5:def __init__(self, func):self.func = funcdef __call__(self, *args, **kwargs):#原函数执行for i in range(5):self.func(*args, **kwargs)
@loop_5
def sum1(a, b):print(a + b)
sum1(1,2)'''2.请实现一个装饰器,每次调用函数时,将函数名字以及调用此函数的时间点写入文件中
'''import time
current_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
# 方法一
def log_name_time(func):def wrapper(*args, **kwargs):#增强:将名字和时间点写入文件name = func.__name__with open("log.txt", "a",encoding="utf-8") as f:f.write(f"调用方法名:{name},调用时间为:{current_time}\n")# 调用了函数func(*args, **kwargs)return wrapper@log_name_time
def zhangsan():print("test2-------")
zhangsan()# 方法二
def log_name_time2(time):def decorator(func):def wrapper(*args, **kwargs):#增强:将名字和时间点写入文件name = func.__name__with open("log.txt", "a",encoding="utf-8") as f:f.write(f"调用方法名:{name},调用时间为:{time}\n")# 调用了函数func(*args, **kwargs)return wrapperreturn decorator@log_name_time2(current_time)
def lisi():print("test3-------")
lisi()'''3.完成文件写入功能,任意写入一个字符,编写装饰器,实现写入文件增加当前系统时间
'''
class log_time():def __init__(self, time):self.time = timedef __call__(self, func):def wrapper(*args, **kwargs):func(*args, **kwargs)with open("log2.txt", "a+",encoding="utf-8") as f:f.write(f",time:{self.time}\n")return wrapper@log_time(current_time)
def write_str(str):with open("log2.txt", "a+",encoding="utf-8") as f:f.write(str)write_str("尹书婷")