为了账号安全,请及时绑定邮箱和手机立即绑定

在Python中使用“assert”有什么用?

在Python中使用“assert”有什么用?

aluckdog 2019-09-18 10:13:45
我一直在阅读一些源代码,在一些地方我已经看到了它的用法assert。这究竟是什么意思?它的用途是什么?
查看完整描述

3 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

注意括号。正如上面已经指出的那样,在Python 3中,assert仍然是一个声明,所以通过类比print(..),可以将其推断为assert(..)或者raise(..)你不应该推断。


这很重要,因为:


assert(2 + 2 == 5, "Houston we've got a problem")

不会有用,不像


assert 2 + 2 == 5, "Houston we've got a problem"

第一个不起作用的原因是bool( (False, "Houston we've got a problem") )评估为True。


在声明中assert(False),这些只是多余的括号False,它们评估其内容。但是assert(False,)括号现在是一个元组,并且非空元组True在布尔上下文中求值。


查看完整回答
反对 回复 2019-09-18
?
HUWWW

TA贡献1874条经验 获得超12个赞

正如其他答案所指出的那样,assert如果给定条件不成立则类似于抛出异常。一个重要的区别是,如果使用优化选项编译代码,则会忽略assert语句。该文件说,assert expression可以更好地被描述为等同于


if __debug__:

   if not expression: raise AssertionError

如果您想要彻底测试代码,然后在您对任何断言案例都没有失败感到高兴时发布优化版本,这将非常有用 - 当优化开启时,__debug__变量变为False,条件将停止进行评估。如果你依赖断言并且没有意识到它们已经消失,这个功能也会让你感到惊讶。


查看完整回答
反对 回复 2019-09-18
  • 3 回答
  • 0 关注
  • 1215 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信