如何将try / except编码在一个地方,但要进行多次评估

时间:2019-01-12 19:07:26

标签: python numpy

我有一小段这样的代码,除了将try包装到tryprint()函数外,因此我可以多次调用此函数,而不必继续尝试编写,除非有十几个求值。

import numpy as np
def tryprint(fun):
    try:
        fun
    except ValueError:
        return 'ValueError'

tryprint(np.dot([1,1],[2]))

在这里,因为输入是有意的错误,我希望在评估中调用tryprint()只会打印“ ValueError”,但这会导致我尝试避免的错误msg:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-47-a1b49d56a970> in <module>()
      4     except ValueError:
      5         return 'ValueError'
----> 6 tryprint(np.dot([1,1],[2]))

我该怎么做才能使此功能仅在输入错误时才打印'ValueError',而不是打印完整的错误消息并停止单元格的运行?谢谢。

1 个答案:

答案 0 :(得分:1)

另一种解决方案是分别传递函数及其args:

import numpy as np
def tryprint(fun, *args):
    try:
        retVal = fun(*args)
    except ValueError:
        return 'ValueError'
    return retVal

print(tryprint(np.dot, [1,1],[2]))