石家庄市高新区建设局网站,请问去哪里学编程比较正规,网站引导动画怎么做,网站建设与管理方案书1 python异常之assert语句
python的assert语句#xff0c;是一个断言语句。
用于断言某个表达式的值是否符合预期#xff0c;不符合则停止运行#xff0c;并且触发AssertionError异常。
1.1 基本用法
用法
assert test_cond [,err_msg]描述
test_cond#xff1a;要测…1 python异常之assert语句
python的assert语句是一个断言语句。
用于断言某个表达式的值是否符合预期不符合则停止运行并且触发AssertionError异常。
1.1 基本用法
用法
assert test_cond [,err_msg]描述
test_cond要测试的条件或表达式test_condition
err_msg可选的错误消息
断言test_cond是否为真如果为假则断言失败触发AssertionError显示错误消息。
示例 def testassert(x):print(x,x)assert x 0,x必须大于等于0print(输入正确)testassert(9555)
x 9555
输入正确testassert(-9)
x -9
Traceback (most recent call last):File pyshell#19, line 1, in moduletestassert(-9)File pyshell#17, line 3, in testassertassert x 0,x必须大于等于0
AssertionError: x必须大于等于01.2 assert等效于raise AssertionError
用法
if __debug__:if not test_cond:raise AssertionError([err_msg]) 描述
assert test_cond [,err_msg]等效写法如上面。
即assert断言语句是raise AssertionError的简写。
debug内置变量默认为True
AssertionError内置异常
示例 def testassert(x):print(x,x)print(__debug__ ,__debug__)if __debug__:if not x 0:raise AssertionError(x必须大于等于0)print(输入正确)testassert(9555)
x 9555
__debug__ True
输入正确testassert(-9)
x -9
__debug__ True
Traceback (most recent call last):File pyshell#24, line 1, in moduletestassert(-9)File pyshell#22, line 6, in testassertraise AssertionError(x必须大于等于0)
AssertionError: x必须大于等于01.3 关闭assert
用法
python -O xxx.py描述
命令行执行python文件时用-O参数关闭assert语句的执行或者使得__debug__为False。
示例
testassert.py
1 import sys
2 def testassert(x):
3 print(您输入的是,x)
4 assert int(x) 0,输入的数必须大于等于0
5 print(输入正确)
6
7 if __name__ __main__:
8 print(sys.argv ,sys.argv)
9 testassert(sys.argv[1])在cmd用命令行执行
# 输入正确不用-O 会执行 assert 语句
D:\python39python E:\documents\F盘\testassert.py 9555
sys.argv [E:\\documents\\F盘\\testassert.py, 9555]
您输入的是 9555
输入正确
# 输入负数不用-O 会执行 assert 语句
D:\python39python E:\documents\F盘\testassert.py -9555
sys.argv [E:\\documents\\F盘\\testassert.py, -9555]
您输入的是 -9555
Traceback (most recent call last):File E:\documents\F盘\testassert.py, line 9, in moduletestassert(sys.argv[1])File E:\documents\F盘\testassert.py, line 4, in testassertassert int(x) 0,输入的数必须大于等于0
AssertionError: 输入的数必须大于等于0
# -O 忽略 assert 语句的执行
D:\python39python -O E:\documents\F盘\testassert.py -9555
sys.argv [E:\\documents\\F盘\\testassert.py, -9555]
您输入的是 -9555
输入正确1.4 assert用于断言业务约束条件
描述
python的assert语句用于收集断言业务约束条件而不是python语法相关的错误。
示例
比如业务规则要求输入大于等于0的数字。
1 import traceback
2 def testassert(x):
3 assert int(x) 0,输入的数必须大于等于0
4 print(输入正确)
5
6 if __name__ __main__:
7 print(__debug__ ,__debug__)
8 while True:
9 print(-*20)
10 try:
11 xinput(请输入大于等于0的数)
12 print(您输入的是,x)
13 testassert(x)
14 except ValueError as ve:
15 print(必须输入数字)
16 traceback.print_exc()
17 except Exception as e:
18 print(e)
19 traceback.print_exc()
20 else:
21 breakcmd命令行执行
D:\python39python E:\documents\F盘\testassert.py
--------------------
请输入大于等于0的数梯阅线条
您输入的是 梯阅线条
必须输入数字
Traceback (most recent call last):File E:\documents\F盘\testassert.py, line 12, in moduletestassert(x)File E:\documents\F盘\testassert.py, line 3, in testassertassert int(x) 0,输入的数必须大于等于0
ValueError: invalid literal for int() with base 10: 梯阅线条
--------------------
请输入大于等于0的数tyxt
您输入的是 tyxt
必须输入数字
Traceback (most recent call last):File E:\documents\F盘\testassert.py, line 12, in moduletestassert(x)File E:\documents\F盘\testassert.py, line 3, in testassertassert int(x) 0,输入的数必须大于等于0
ValueError: invalid literal for int() with base 10: tyxt
--------------------
请输入大于等于0的数-9
您输入的是 -9
输入的数必须大于等于0
Traceback (most recent call last):File E:\documents\F盘\testassert.py, line 12, in moduletestassert(x)File E:\documents\F盘\testassert.py, line 3, in testassertassert int(x) 0,输入的数必须大于等于0
AssertionError: 输入的数必须大于等于0
--------------------
请输入大于等于0的数9555
您输入的是 9555
输入正确1.5 assert用于抽象超类
描述
显式要求子类必须实现抽象超类的方法可以在超类方法用assert False。
关于抽象超类的内容可以参考《python类接口和抽象超类》
示例 class AbsSuper:def delegate(self):self.action()def action(self):assert False,子类必须定义 action class Provider(AbsSuper):pass Provider().delegate()
Traceback (most recent call last):File pyshell#19, line 1, in moduleProvider().delegate()File pyshell#16, line 3, in delegateself.action()File pyshell#16, line 5, in actionassert False,子类必须定义 action
AssertionError: 子类必须定义 action