今天在看U-net的PyTorch实现版本的时候,发现里面用到了断言的相关语法,在此记录一下!
一、断言的语法格式
assert <断言判断条件> [,"错误提示消息"]
当表达式为真时,程序继续往下执行;
当表达式为假时,抛出AssertionError错误,并将‘参数’输出。
二、使用场景
断言是为了告诉开发人员程序中发生了不可恢复的错误,对于可以预料的错误(如未找到相关文件),用户可以予以纠正或重试,断言并不是为此而生的。
如果程序没有bug,那么这些断言条件永远也不会触发,但如果违反了断言条件,程序就会崩溃并报告断言错误,告诉开发人员究竟违反了哪个“不可能”的情况,这样可以更轻松的追踪和修复程序中的bug。python中的断言语句是一种调试辅助功能,不是用来处理运行时错误的机制,使用断言的目的是让开发人员更快速的找到可能导致bug的根本原因,除非程序中存在bug,否则绝不会抛出断言错误。
三、案例
- 代码
def fun1(s):
n = int(s)
assert n!= 0, 'n is zero'
return 10 / n
fun1('0')
- 运行结果
AssertionError Traceback (most recent call last)
<ipython-input-6-c41609152707> in <module>
3 assert n!= 0, 'n is zero'
4 return 10 / n
----> 5 fun1('0')
<ipython-input-6-c41609152707> in fun1(s)
1 def fun1(s):
2 n = int(s)
----> 3 assert n!= 0, 'n is zero'
4 return 10 / n
5 fun1('0')
AssertionError: n is zero