我已经读过关于何时使用assert vs. exception,但我仍然没有“得到它”。似乎每当我认为我应该使用assert时,稍后在开发中我会发现我在“跳跃之前”“以确保断言在调用函数时不会失败。由于还有另一个关于更喜欢使用try-except的Python习惯用法,我通常最终会放弃断言并抛出异常。我还没有找到一个使用断言似乎正确的地方。谁能想出一些好的例子呢?
答案 0 :(得分:22)
一个好的指南是assert
,当它的触发意味着您的代码中出现错误时。当您的代码假定某些内容并根据假设行事时,建议使用assert
来保护此假设。这个assert
失败意味着您的假设不正确,这意味着您的代码不正确。
答案 1 :(得分:15)
答案 2 :(得分:3)
Generelly,断言是为了验证您对代码的假设,即在那个时间点,断言成功,或者您的实现是某种错误。一个例外是实际上期望发生错误并“拥抱”它,即允许你处理它。
答案 3 :(得分:3)
一个很好的例子是检查函数的参数是否一致:
def f(probability_vector, positive_number):
assert sum(probability_vector) == 1., "probability vectors have to sum to 1"
assert positive_number >= 0., "positive_number should be positive"
# body of function goes here