Python断⾔及常⽤断⾔函数总结
Python断⾔
Python asrt 语句,⼜称断⾔语句,可以看做是功能缩⼩版的 if 语句,它⽤于判断某个表达式的值,如果值为真,则程序可以继续往下执⾏;反之,Python 解释器会报 AsrtionError 错误。
asrt 语句的语法结构为:
asrt表达式
asrt 语句的执⾏流程可以⽤ if 判断语句表⽰(等效),如下所⽰:
if表达式==True:
程序继续执⾏
民间的英文el:
程序报 AsrtionError 错误
有读者可能会问,明明 asrt 会令程序崩溃,为什么还要使⽤它呢?这是因为,与其让程序在晚些时候崩溃,不如在错误条件出现时,就直接让程序崩溃,这有利于我们对程序排错,提⾼程序的健壮性。
因此,asrt 语句通常⽤于检查⽤户的输⼊是否符合规定,还经常⽤作程序初期测试和调试过程中的辅助⼯具。
下⾯的程序演⽰了 asrt 语句的⽤法:
mathmark = int(input())
#断⾔数学考试分数是否位于正常范围内
asrt 0 <= mathmark <= 100
#只有当 mathmark 位于 [0,100]范围内,程序才会继续执⾏
print("数学考试分数为:",mathmark)
运⾏该程序,测试数据如下:
90
数学考试分数为: 90
再次执⾏该程序,测试数据为:
159
Traceback (most recent call last):
File "C:\Urs\mengma\Desktop\file.py", line 3, in <module>
asrt 0 <= mathmark <= 100
AsrtionError
可以看到,当 asrt 语句后的表达式值为真时,程序继续执⾏;反之,程序停⽌执⾏,并报 AsrtionError 错误。
常⽤断⾔函数
常⽤
这⾥介绍⼏个常⽤断⾔的使⽤⽅法,可以⼀定程度上帮助⼤家对预期结果进⾏判断。-
asrtEqual
asrtNotEqual
asrtTrue
asrtFal
asrtIsNone
asrtIsNotNone
清朝多少年历史asrtEqual 和 asrtNotEqual
asrtEqual:如两个值相等,则pass
asrtNotEqual:如两个值不相等,则pass
使⽤⽅法:
asrtEqual(first,cond,msg)其中first与cond进⾏⽐较,如果相等则通过;msg为失败时打印的信息,选填;断⾔asrtNotEqual反着⽤就可以了。
asrtTrue和asrtFal
asrtTrue:判断bool值为True,则pass琵琶行序言
asrtFal:判断bool值为Fal,则Pass
使⽤⽅法:
asrtTrue(expr,msg)其中express输⼊相应表达式,如果表达式为真,则pass;msg选填;断⾔asrtFal如果表达式为假,则pass asrtIsNone和asrtIsNotNone
唐之韵
asrtIsNone:不存在,则pass
烧烤烤鱼asrtIsNotNone:存在,则pass
使⽤⽅法:
asrtIsNone(obj,msg)检查某个元素是否存在croatian
总结:
常⽤
asrtEqual(a, b) a == b
asrtNotEqual(a, b) a != b
asrtTrue(x) bool(x) is True
asrtFal(x) bool(x) is Fal
asrtIs(a, b) a is b 2.7
伊斯兰教教义asrtIsNot(a, b) a is not b 2.7
asrtIsNone(x) x is None 2.7
asrtIsNotNone(x) x is not None 2.7
asrtIn(a, b) a in b 2.7
asrtNotIn(a, b) a not in b 2.7
asrtIsInstance(a, b) isinstance(a, b) 2.7
asrtNotIsInstance(a, b) not isinstance(a, b) 2.7
其它
asrtAlmostEqual(a, b) round(a-b, 7) == 0
asrtNotAlmostEqual(a, b) round(a-b, 7) != 0
asrtGreater(a, b) a > b 2.7
asrtGreaterEqual(a, b) a >= b 2.7
asrtLess(a, b) a < b 2.7
asrtLessEqual(a, b) a <= b 2.7
asrtRegexpMatches(s, re) regex.arch(s) 2.7
asrtNotRegexpMatches(s, re) not regex.arch(s) 2.7
asrtItemsEqual(a, b) sorted(a) == sorted(b) and works with unhashable objs 2.7
asrtDictContainsSubt(a, b) all the key/value pairs in a exist in b 2.7
asrtMultiLineEqual(a, b) strings 2.7
asrtSequenceEqual(a, b) quences 2.7
asrtListEqual(a, b) lists 2.7
asrtTupleEqual(a, b) tuples 2.7
asrtSetEqual(a, b) ts or frozents 2.7
asrtDictEqual(a, b) dicts 2.7
asrtMultiLineEqual(a, b) strings 2.7
asrtSequenceEqual(a, b) quences 2.7
asrtListEqual(a, b) lists 2.7
asrtTupleEqual(a, b) tuples 2.7
asrtSetEqual(a, b) ts or frozents 2.7asrtDictEqual(a, b) dicts 2.7
使⽤时机:
那么我们什么时候应该使⽤断⾔呢?如果没有特别的⽬的,断⾔应该⽤于如下情况:
防御性的编程
运⾏时对程序逻辑的检测
合约性检查(⽐如前置条件,后置条件)
程序中的常量
检查⽂档向日葵阅读
例:防御性编程中添加断⾔
在代码开始添加注释是个好的开端,但是⼈们都不太喜欢读和更新这些注释,这些注释会很快变得过时。但对于断⾔,我们可以同时对这块代码编写⽂档,如果这些断⾔被违反了,会直接引起⼀个简单⽽⼜直接的失败。
refer: