返回介绍

assert 语句

发布于 2024-01-29 22:24:15 字数 1331 浏览 0 评论 0 收藏 0

Python还包括了assert语句,这种情况有些特殊。这是raise常见使用模式的语法简写,assert可视为条件式的raise语句。该语句形式为:

执行起来就像如下的代码。

换句话说,如果test计算为假,Python就会引发异常:data项(如果提供了的话)是异常的额外数据。就像所有异常,引发的AssertionError异常如果没被try捕捉,就会终止程序,在此情况下数据项将作为出错消息的一部分显示。

assert语句是附加的功能,如果使用-O Python命令行标志位,就会从程序编译后的字节码中移除,从而优化程序。AssertionError是内置异常,而__debug__标志位是内置变量名,除非有使用-O标志,否则自动设为1(真值)。使用类似python-O main.py的一个命令行来在优化模式中运行,并且关闭assert。

例子:收集约束条件(但不是错误)

Assert语句通常是用于验证开发期间程序状况的。显示时,其出错消息正文会自动包括源代码的行信息,以及列在assert语句中的值。考虑文件asserter.py。

牢记这一点很重要:assert几乎都是用来收集用户定义的约束条件,而不是捕捉内在的程序设计错误。因为Python会自行收集程序的设计错误,通常来说,没必要写assert去捕捉超出索引值、类型不匹配以及除数为零之类的事情。

这类assert一般都是多余的:因为Python会在遇见错误时自动引发异常,让Python替你把事情做好就行了。[1]另一个assert常见用法例子,可以参考第28章的抽象超类例子。在那里,我们使用assert让未定义方法的调用失败并打印消息。

[1]至少,多数情况下是这样。就像本书前面建议的那样,如果函数必须运行长时间或无法恢复的动作,才能到达异常会被触发的地方,你可能会想亲自测试错误。不过,即使是这种情况,也要小心,别让测试过于具体或严格,不然,就会限制程序代码的用处。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文