Python中assert的使用示例?

11 投票
4 回答
17412 浏览
提问于 2025-04-16 04:11

我读过关于什么时候用断言(assert)和异常(exceptions)的内容,但还是有点搞不清楚。每当我觉得应该用断言的时候,后来在开发中我发现自己总是要先检查一下,确保调用这个函数的时候断言不会失败。因为在Python中还有一种习惯是更倾向于使用try-except,所以我通常会放弃断言,改用抛出异常。我还没找到一个合适的地方来使用断言。有没有人能给我一些好的例子呢?

4 个回答

3

一般来说,assert(断言)是用来验证你对代码的某个假设的,也就是说在某个时刻,断言要么成功,要么说明你的代码有问题。异常则是预期会发生错误,并且“接纳”这个错误,也就是让你有机会去处理它。

16

通常我们会用assert来检查一些绝对不应该发生的事情。这有点像是给程序做个 sanity check(理智检查)。

还有一点需要注意的是,当代码被优化时,assert会被去掉:

当前的代码生成器在编译时请求优化时,不会为assert语句生成任何代码。

23

一个好的原则是,当你使用assert时,它的触发意味着你的代码里有一个错误。当你的代码假设某些事情是对的,并且根据这个假设去执行操作时,建议用assert来保护这个假设。如果assert失败了,就说明你的假设不对,这也就意味着你的代码有问题。

撰写回答