在python中模拟“wrap”的最佳方法
我正在寻找最好的方法,如何在Python2.6中编写wrap函数。此函数将命令函数调用作为参数,并在调用不顺利时终止脚本,返回错误值。我看到的主要问题是,当嵌套调用失败时,wrap必须检测此事件并终止脚本。 比如说在python中模拟“wrap”的最佳方法,python,Python,我正在寻找最好的方法,如何在Python2.6中编写wrap函数。此函数将命令函数调用作为参数,并在调用不顺利时终止脚本,返回错误值。我看到的主要问题是,当嵌套调用失败时,wrap必须检测此事件并终止脚本。 比如说 def foo1(x): y = foo2(x) return y def foo2(y): y = 2**y return y 然后我使用像这样的包装: wrap(foo1(2)) 请考虑这个例子极为简化。 问题是,即使在foo2中,wrap也
def foo1(x):
y = foo2(x)
return y
def foo2(y):
y = 2**y
return y
然后我使用像这样的包装:
wrap(foo1(2))
请考虑这个例子极为简化。
问题是,即使在foo2中,wrap也必须检测何时发生错误 除非您开始使用Python的字节码,否则没有明确的方法来完成您的要求。即使这样,也不清楚错误检测意味着什么,因为您可能想从代码中调用其他函数,比如计算数字的sqrt:
>>> def foo3(y):
... y = sqrt(5)
... return y
...
sqrt上的错误意味着什么
测试代码最常用的两种方法是:
我只关心一个值。如果要测试多个功能,请分别测试每个功能:
wrap(foo1(2))
wrap(foo2(2))
wrap(foo3(2))
2使用异常。每个函数负责发出错误信号,并从wrap中检测该错误:
def wrap(f, args, kwargs={}):
try:
f(*args, **kwargs)
except:
print("Error on f")
def main():
wrap(foo1, (2, ))
wrap(foo2, (2, ))
wrap(foo3, (2, ))
你不能简单地使用try…除了捕获wrap函数中的错误吗?这个问题对我来说不是很清楚。异常将传播,您可以在任何级别捕获它们。我认为我必须使用try,但我可能希望将可执行应用程序包装为子流程。将尝试自己处理此错误吗?显示有问题的代码。事实上,你有什么问题吗?