在写代码过程中使用assert是一个非常好的习惯,在一个程序还没完善或者测试好之前,我们不知道程序那里会出错,与其让他在运行时崩溃,不如在出现错误条件时就触发异常。assert可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况
assert expression
等价为:
if not expression:
raise AssertionError
此处若expression为false,则会触发异常,assert的作用是用来声名某个条件为True
语法为:
assert expression [, arguments]
等价为:
if not expression:
raise AssertionError(arguments)
assert的异常参数,其实就是在expression后添加字符串信息,用来解释断言并更好知道哪里出了问题
assert year in ["2007", "2012"], "year must be in ['2007', '2012']"
这个是我在读VOC数据集代码中的一行代码。意思是:若year in ["2007","2012"] 为 True,则继续运行下一行代码,若为 False,则触发异常,并显示“year must be in ['2007', '2012']”
assert os.path.exists(txt_path), "not found {} file.".format(txt_name)
上面这段代码意思为:若txt_path这个路径存在,及os.path.exists(txt_path)为True,则继续执行下面的代码,若为False,则触发异常并显示"not found txt_path file“