编写一个程序,使用Python装饰器实现打印函数调用栈的功能,即进入函数调用时打印f'Enter {func.__name__}',结束函数调用时打印 f'Exit {func.__name__}'
时间: 2023-05-17 18:06:28 浏览: 120
浅析Python编写函数装饰器
可以使用如下的Python代码实现:
```python
import functools
def print_call_stack(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
print(f"Enter {func.__name__}")
result = func(*args, **kwargs)
print(f"Exit {func.__name__}")
return result
return wrapper
```
使用时,只需要在需要打印函数调用栈的函数上添加 `@print_call_stack` 装饰器即可,例如:
```python
@print_call_stack
def my_function():
print("Hello World!")
```
当调用 `my_function()` 时,会输出如下的调用栈信息:
```
Enter my_function
Hello World!
Exit my_function
```
阅读全文