首页 > Python > “assert”在 Python 中有什么用?

“assert”在 Python 中有什么用?

上一篇 下一篇

什么意思?如何使用?assert

分割线

网友回答:

注意括号。正如在其他答案中指出的那样,在 Python 3 中,仍然是一个语句,因此通过类比,人们可以推断出相同的内容,但你不应该。assertprint(..)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)Falseassert(False,)True

分割线

网友回答:

该语句几乎存在于所有编程语言中。它有两个主要用途:assert

  1. 它有助于在程序的早期检测问题,原因明确,而不是稍后在其他操作失败时检测问题。例如,Python中的类型错误可以经过几层代码,然后才真正引发一个if。Exception
  2. 它作为其他阅读代码的开发人员的文档,他们看到并可以自信地说,从现在开始,它的状况仍然存在。assert

当你这样做时…

assert condition

…您告诉程序测试该条件,如果条件为 false,则立即触发错误。

在 Python 中,它大致相当于这样:

if not condition:
    raise AssertionError()

在 Python shell 中尝试一下:

>>> assert True # nothing happens
>>> assert False
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError

断言可以包含可选消息,您可以在运行解释器时禁用它们。

要在断言失败时打印消息,请执行以下操作:

assert False, "Oh no! This assertion failed!"

不要像函数一样使用括号进行调用。这是一个声明。如果这样做,则将以元组作为第一个参数运行。assertassert(condition, message)assert(condition, message)

至于禁用它们,当在优化模式下运行时,其中 is ,断言语句将被忽略。只需传递标志:python__debug__False-O

python -O script.py

有关相关文档,请参阅此处。

分割线

网友回答:

正如其他答案所指出的,类似于在给定条件不为真时引发异常。一个重要的区别是,如果使用优化选项编译代码,断言语句将被忽略。文档说,可以更好地描述为等同于assert-Oassert expression

if __debug__:
   if not expression: raise AssertionError

如果您想彻底测试您的代码,然后在您满意您的断言案例都没有失败时发布优化版本,这会很有用 – 当优化开启时,变量变为 False,条件将停止评估。如果您依赖断言并且没有意识到它们已经消失,此功能也可以让您大吃一惊。__debug__

模板简介:该模板名称为【“assert”在 Python 中有什么用?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Python】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 337次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 03-07
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
html5 微信图片 微信文章 单页式简历模板 自适应 微信素材 响应式 微信模板 微信公众平台 企业网站
您可能会喜欢的其他模板