再不修改函数源代码的情况下,给下面两个函数增加 执行前输出"start",结束后输出"end" 的功能。(使 用装饰器完成) def send_message(name, message): prin
时间: 2024-10-06 16:02:29 浏览: 11
要给这两个函数添加“开始”和“结束”的输出功能而无需修改它们的原始代码,你可以使用Python中的装饰器(Decorator)。装饰器本质上是一个可以修改其他函数行为的小型函数。以下是使用装饰器如何实现这个需求的示例:
```python
# 首先创建一个装饰器函数,它接受一个函数作为输入并返回一个新的函数
def log_start_end(func):
def wrapper(*args, **kwargs):
print(f"{func.__name__}: start")
result = func(*args, **kwargs)
print(f"{func.__name__}: end")
return result
return wrapper
# 现在我们可以将装饰器应用到`send_message`上
@log_start_end
def send_message(name, message):
print(f"Sending message from {name}: {message}")
# 同样地,也可以应用到另一个函数
@log_start_end
def receive_message(message):
print(f"Received message: {message}")
# 调用函数会自动包含开始和结束的日志输出
send_message("Alice", "Hello!")
receive_message("New update")
阅读全文