编写一个函数,求1-n内所有偶数和再为函数写一个装饰器,函数运行前显示before运行后显示after
时间: 2024-09-28 14:04:45 浏览: 25
首先,我们创建一个函数`sum_even_numbers`,用于计算从1到n内的所有偶数之和:
```python
def sum_even_numbers(n):
even_sum = sum(i for i in range(1, n+1) if i % 2 == 0)
return even_sum
# 检测并显示 before 和 after
def log_decorator(func):
def wrapper(n):
print("Before running:", func.__name__)
result = func(n)
print("After running:", func.__name__, "result:", result)
return result
return wrapper
# 应用装饰器
sum_even_numbers_with_log = log_decorator(sum_even_numbers)
# 调用带装饰器的函数
result = sum_even_numbers_with_log(10)
```
在这个例子中,`log_decorator`是一个装饰器,它接收一个函数作为参数,并在其前后添加日志消息。当我们调用`sum_even_numbers_with_log(10)`时,函数会在开始执行前显示"Before running: sum_even_numbers",结束后显示" After running: sum_even_numbers result: [计算的偶数和]"。
阅读全文