问:在python中,装饰器是什么?怎么去实现?
答:装饰器是一种用于修改、扩展或包装函数或类的语法。装饰器可以在不改变源代码的情况下,对函数或类进行功能增强、日志记录等操作。
在本质上,装饰器是接收一个函数或类,返回一个新的函数或类,常用@语法来应用在目标函数或类上。列如一个计时装饰器:
import functools
import time
def timer(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"函数 {func.__name__} 的执行时间为:{end_time - start_time} 秒")
return result
return wrapper
@timer
def my_function():
time.sleep(2)
my_function()
在上述代码中,我们定义了一个装饰器函数timer,它接收一个函数作为输入,并返回一个新的函数wrapper,wrapper函数在调用目标函数之前记录开始时间,在调用目标函数之后记录结束时间并计算执行时间。最后,装饰器打印出目标函数的执行时间。
使用@timer语法将装饰器应用到my_function
函数上,使得my_function
在执行时会被timer
装饰器所包装,实现了计时功能。
下期问题:在python中,说一下包和模块的区别,以及常见的包有哪些?
欢迎各位小伙伴留言,以及提出自己面试所遇到的问题。