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必须大于等于0'  
     print('输入正确')  
 \>>> testassert(9555)  
 x\= 9555  
 输入正确  
 \>>> testassert(\-9)  
 x\= \-9  
 Traceback (most recent call last):  
   File "<pyshell#19>", line 1, in <module\>  
     testassert(\-9)  
   File "<pyshell#17>", line 3, in testassert  
     assert x \>\= 0,'x必须大于等于0'  
 AssertionError: x必须大于等于0

1.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 <module\>  
     testassert(\-9)  
   File "<pyshell#22>", line 6, in testassert  
     raise AssertionError('x必须大于等于0')  
 AssertionError: x必须大于等于0

1.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:\\python39\>python E:\\documents\\F盘\\testassert.py 9555  
 sys.argv = \['E:\\\\documents\\\\F盘\\\\testassert.py', '9555'\]  
 您输入的是: 9555  
 输入正确  
 \# 输入负数,不用-O ,会执行 assert 语句  
 D:\\python39\>python 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 <module\>  
     testassert(sys.argv\[1\])  
   File "E:\\documents\\F盘\\testassert.py", line 4, in testassert  
     assert int(x) \>\= 0,'输入的数必须大于等于0'  
 AssertionError: 输入的数必须大于等于0  
 \# -O 忽略 assert 语句的执行  
 D:\\python39\>python \-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              x\=input("请输入大于等于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              break

cmd命令行执行

 D:\\python39\>python  E:\\documents\\F盘\\testassert.py  
 \--------------------  
 请输入大于等于0的数:梯阅线条  
 您输入的是: 梯阅线条  
 必须输入数字  
 Traceback (most recent call last):  
   File "E:\\documents\\F盘\\testassert.py", line 12, in <module\>  
     testassert(x)  
   File "E:\\documents\\F盘\\testassert.py", line 3, in testassert  
     assert 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 <module\>  
     testassert(x)  
   File "E:\\documents\\F盘\\testassert.py", line 3, in testassert  
     assert 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 <module\>  
     testassert(x)  
   File "E:\\documents\\F盘\\testassert.py", line 3, in testassert  
     assert int(x) \>\= 0,'输入的数必须大于等于0'  
 AssertionError: 输入的数必须大于等于0  
 \--------------------  
 请输入大于等于0的数:9555  
 您输入的是: 9555  
 输入正确

1.5 assert用于抽象超类

描述

显式要求子类必须实现抽象超类的方法,可以在超类方法用assert False。

示例

 \>>> 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 <module\>  
     Provider().delegate()  
   File "<pyshell#16>", line 3, in delegate  
     self.action()  
   File "<pyshell#16>", line 5, in action  
     assert False,'子类必须定义 action'  
 AssertionError: 子类必须定义 action
---------------------------END---------------------------

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D5d3BAZG-1691474813569)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]编辑

img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LecFucgz-1691474813569)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]编辑

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ijUNJmfF-1691474813570)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]编辑

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pPi6pFCN-1691474813570)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]编辑

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-USBB11OM-1691474813570)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]编辑

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XZj3lldZ-1691474813570)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]编辑

六、面试宝典

在这里插入图片描述[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KJgReePR-1691474813571)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]编辑

在这里插入图片描述[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GQ2MYs7S-1691474813571)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]编辑

简历模板在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值