已完成脚本中的断言?

Assertions in a finished script?

我刚刚完成了图像的卷积脚本。

现在,我的函数如下所示:

def conv(image: np.ndarray,
         conv: np.ndarray, *args):

    assert 1 < image.ndim < 4, "error0"
    assert conv.ndim is 2, "error1"
    xconv, yconv = conv.shape
    assert xconv == yconv and xconv % 2, "error2"
    # computations

如果这些断言中的任何一个不满足,那么输入是错误的,函数很可能会给出错误。

尽管如此,用户将无法理解哪里出了问题,加上出现错误之前的延迟。

我到处都读到 assert 用于调试。每次运行时“减慢”我的算法而不是更慢和未记录的错误(他必须参考文档字符串)更好吗?在这些情况下最常见的做法是什么?

在这些情况下最常见的做法是什么?

您可以 raise Exception 简短描述它发生的原因,例如您可以这样做:

if not 1 < image.ndim < 4:
    raise Exception("Incorrect number of dimensions")

而不是

assert 1 < image.ndim < 4, "error0"

注意not(条件否定)。有关更多数据,请参阅 docs fo Errors and Exceptions