断言有什么用处?

断言是判断一个语句是否为真,如果为真,不做任何动作,如果为假 则抛出一个异常AssertionError。

通常用于检查一个参数是否正确。用在肯定正确的情况下,如果错误则 立即停止执行。

典型的用途是在测试场景,某个返回值必定是正确的,如果错误停止进一步 的测试。或者捕获这个错误异常,记录失败的次数和失败的代码位置等等。

另外一个用途是判断函数入参,这个函数只处理字符串,那我们就判断这个 参数肯定是字符串,如果不是则抛出AssertionError异常。例如python3.6.4 本身自带的datetime.py模块的函数

def _days_in_month(year, month):
    "year, month -> number of days in that month in that year."
    assert 1 <= month <= 12, month
    if month == 2 and _is_leap(year):
        return 29
    return _DAYS_IN_MONTH[month]

它对入参月份month进行判断,如果不在1到12的范围内,则抛出异常。