assert断言处理【Python】

  • 内容
  • 相关

    编写程序时,在调试的时候,有的时候需要知道代码执行过程中的值,如对象是否为空,数值是否正确等,这时候一般使用 print() 打印中间结果,或者使用断点跟踪调试查看变量,但是其实使用 assert 断言更灵活高效。

    断言 assert 是指期望用户指定的条件满足,它是当用户定义的约束条件不满足时触发 AssertionError 异常,因此 assert 语句可以视为条件式的 raise 语句。它的主要功能是帮助程序员调试程序,从而保证程序运行的准确性,一般在开发调试阶段使用。

语句形式:

assert  <布尔表达式>

assert  <test>,<data>

    其中 <test> 是一个布尔表达式,<data>是字符串表达式,也就是断言失败时输出的失败消息,如果布尔表达式的值为 False 时,就会抛出 AssertionError 异常。执行效果类似:

if  not  <test>:
    raise  AssertionError(<data>)

    Python 解释器有两种运行模式,调试模式和优化模式。一般为调试模式,内置只读变量 _debug_ True 。使用选项 -O 运行时,即 python.exe  -O 为优化模式,此时内置只读变量 _debug_ False

    示例:

x=int(input("请输入一个整数作为被除数:"))
y=int(input("请输入一个整数作为除数:"))
assert y!=0,'除数不能为0.'
z=x/y
print(x,'/',y,'=',z)

程序运行结果:

C:\Users\dell>py -3 D:\youyou_program\Python\assert.py
请输入一个整数作为被除数:5
请输入一个整数作为除数:0
Traceback (most recent call last):
  File "D:\youyou_program\Python\assert.py", line 3, in <module>
    assert y!=0,'除数不能为0.'
AssertionError: 除数不能为0.

启用、禁用断言

    一般 Python 运行再调试模式,程序中的断言语句可以帮助程序调试,在正式运行时,加上 -O 选项,以优化模式允许来禁用断言,从而提高程序效率。例如使用上面这个例子实验:

C:\Users\dell>py -3 D:\youyou_program\Python\assert.py
请输入一个整数作为被除数:5
请输入一个整数作为除数:0
Traceback (most recent call last):
  File "D:\youyou_program\Python\assert.py", line 3, in <module>
    assert y!=0,'除数不能为0.'
AssertionError: 除数不能为0.

C:\Users\dell>py -3 -O D:\youyou_program\Python\assert.py
请输入一个整数作为被除数:5
请输入一个整数作为除数:0
Traceback (most recent call last):
  File "D:\youyou_program\Python\assert.py", line 4, in <module>
    z=x/y
ZeroDivisionError: division by zero

本文标签:

版权声明:若无特殊注明,本文皆为《尤尤》原创,转载请保留文章出处。

本文链接:assert断言处理【Python】 - https://www.yxfseo.cn/post-181.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注