我想检查是否在Python脚本中调用了一个函数.
我目前的解决方案如下:
def _print_error(msg):
print(msg)
print("Default error message.")
_print_error.was_called = True
_print_error.was_called = False
Run Code Online (Sandbox Code Playgroud)
我可以_print_error通过检查来检查是否被调用_print_error.was_called.
另一种可能的方法是设置一个类并定义一个静态变量,只要该类被实例化,该变量就会被更改.__init__可以打印消息并更改was_called变量.
有没有更好的方法来实现相同的结果?
使用装饰器设置标志:
from functools import wraps
def flag_when_called(func):
func.was_called = False
@wraps(func)
def wrapper(*args, **kwargs):
result = func(*args, **kwargs)
func.was_called = True
return result
return wrapper
Run Code Online (Sandbox Code Playgroud)
请注意,我只在调用成功完成时设置标志(例如,如果引发异常,则不设置标志).您可以交换订单(return func(*args, **kwargs)如果您想要设置标志,即使引发了异常,也可以直接交换).
只需将其应用于该功能:
@flag_when_called
def _print_error(msg):
print(msg)
print("Default error message.")
Run Code Online (Sandbox Code Playgroud)