已完成脚本中的断言?
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。
我刚刚完成了图像的卷积脚本。
现在,我的函数如下所示:
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。