面试题答案
一键面试import time
def log_decorator(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
with open('function_log.txt', 'a') as f:
f.write(f"调用时间: {time.ctime(start_time)}\n")
f.write(f"传入位置参数: {args}\n")
f.write(f"传入关键字参数: {kwargs}\n")
f.write(f"返回值: {result}\n")
f.write(f"函数执行时间: {end_time - start_time} 秒\n\n")
return result
return wrapper
@log_decorator
def example_function(a, b):
time.sleep(1)
return a + b
if __name__ == "__main__":
example_function(3, 5)
上述代码中:
log_decorator
是定义的装饰器函数,它接受一个函数func
作为参数。- 在
wrapper
内部,使用time.time()
获取函数调用开始和结束的时间,执行被装饰的函数并获取返回值。 - 打开
function_log.txt
文件(如果不存在则创建,'a'
模式表示追加写入),将调用时间、传入参数和返回值等信息写入文件。 example_function
是被装饰的示例函数,模拟了一个简单的计算并使用time.sleep
模拟函数执行时间。- 在
if __name__ == "__main__":
块中调用example_function
来测试装饰器功能。