Python函数装饰器本质及工作原理
- 本质:
- Python函数装饰器本质上是一个高阶函数,它接受一个函数作为参数,并返回一个新的函数。它提供了一种简洁的方式来增强或修改已有函数的行为,而无需直接修改函数的源代码。
- 工作原理:
- 当一个函数被装饰器装饰时,实际上是将被装饰的函数作为参数传递给装饰器函数。装饰器函数内部定义一个新的函数(通常称为包装函数),这个包装函数可以在调用原函数前后执行一些额外的代码,然后返回包装函数,原函数名就指向了这个新返回的包装函数。这样,当调用原函数名时,实际执行的是包装函数的代码,从而实现对原函数功能的扩展。
记录函数调用时间的装饰器代码
import time
def log_call_time(func):
def wrapper(*args, **kwargs):
current_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
print(f"当前时间: {current_time}, 函数名: {func.__name__}")
result = func(*args, **kwargs)
return result
return wrapper
@log_call_time
def test_function():
print("这是被装饰的函数")
test_function()