断言是什么意思?它是如何使用的?


当前回答

在Python中,断言的目标是通知开发人员程序中不可恢复的错误。

断言并不是为了表明预期的错误条件,比如“文件未找到”,用户可以采取纠正措施(或者只是重试)。

另一种看待它的方法是,断言是代码中的内部自检。它们通过在代码中声明一些不可能的条件来工作。如果这些条件不成立,则意味着程序中存在错误。

如果您的程序没有错误,这些情况将永远不会发生。但如果其中一个确实发生了,程序将崩溃,并提示一个断言错误,告诉您究竟触发了哪个“不可能”条件。这使得跟踪和修复程序中的错误变得更加容易。

以下是我写的Python断言教程的摘要:

Python的assert语句是一种调试辅助,而不是处理运行时错误的机制。使用断言的目标是让开发人员更快地找到错误的可能根源。除非程序中存在错误,否则绝不应引发断言错误。

其他回答

从文档:

断言语句是向程序中插入调试断言的一种方便方法

你可以在这里阅读更多:http://docs.python.org/release/2.5.2/ref/assert.html

在Python中,断言的目标是通知开发人员程序中不可恢复的错误。

断言并不是为了表明预期的错误条件,比如“文件未找到”,用户可以采取纠正措施(或者只是重试)。

另一种看待它的方法是,断言是代码中的内部自检。它们通过在代码中声明一些不可能的条件来工作。如果这些条件不成立,则意味着程序中存在错误。

如果您的程序没有错误,这些情况将永远不会发生。但如果其中一个确实发生了,程序将崩溃,并提示一个断言错误,告诉您究竟触发了哪个“不可能”条件。这使得跟踪和修复程序中的错误变得更加容易。

以下是我写的Python断言教程的摘要:

Python的assert语句是一种调试辅助,而不是处理运行时错误的机制。使用断言的目标是让开发人员更快地找到错误的可能根源。除非程序中存在错误,否则绝不应引发断言错误。

如果你想知道python中保留函数的确切功能,输入help(enter_keyword)

如果您正在输入保留关键字,请确保将其输入为字符串。

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

if __debug__:
   if not expression: raise AssertionError

如果你想彻底测试你的代码,然后在你高兴地看到你的断言案例都没有失败时发布一个优化版本,这可能是有用的——当优化打开时,__debug__变量变成False,条件将停止计算。如果您依赖断言,而没有意识到断言已经消失,该特性还可以发现这一点。

在Pycharm中,如果你使用assert和isinstance来声明对象的类型,它会让你在编码时访问父对象的方法和属性,它会自动完成。

例如,self。object1。object2是MyClass对象。

import MyClasss

def code_it(self):
    testObject = self.object1.object2 # at this point, program doesn't know that testObject  is a MyClass object yet
    assert isinstance(testObject , MyClasss) # now the program knows testObject is a MyClass object
    testObject.do_it() # from this point on, PyCharm will be able to auto-complete when you are working on testObject