Python 检查是否调用了函数
我想检查Python脚本中是否调用了函数 我目前的解决方案如下:Python 检查是否调用了函数,python,Python,我想检查Python脚本中是否调用了函数 我目前的解决方案如下: def _print_error(msg): print(msg) print("Default error message.") _print_error.was_called = True _print_error.was_called = False 我可以通过检查\u print\u error.was\u called来检查是否调用了\u print\u error 另一种可能的方法是设置一
def _print_error(msg):
print(msg)
print("Default error message.")
_print_error.was_called = True
_print_error.was_called = False
我可以通过检查\u print\u error.was\u called
来检查是否调用了\u print\u error
另一种可能的方法是设置一个类并定义一个静态变量,该变量在类实例化时会更改。\uuuu init\uuuu
可以打印消息并更改被称为
变量
有没有更好的方法可以达到同样的效果?使用装饰器设置标志:
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
请注意,我仅在调用成功完成时设置标志(例如,如果引发异常,则不设置标志)。如果要设置标志,即使引发异常,也可以交换订单(并直接return func(*args,**kwargs)
只需将其应用于函数:
@flag_when_called
def _print_error(msg):
print(msg)
print("Default error message.")
做你所做的没关系。如果你经常这样做,你可以为此写一个装饰师:
import functools
def trackcalls(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
wrapper.was_called = True
return func(*args, **kwargs)
wrapper.was_called = False
return wrapper
@trackcalls
def _print_error(msg):
print(msg)
print("Default error message.")
_print_error()
# and then check it:
if _print_error.was_called:
print("Alarm!")
谢谢。这回答了我的问题。我将关闭它。