断言
凡是用 print() 来辅助查看的地方,都可以用断言(assert)来替代:
def foo(s):
n = int(s)
assert n != 0, 'n is zero!'
return 10 / n
def main():
foo('0')
assert 的意思是,表达式 n != 0 应该是 True ,否则,根据程序运行的逻辑,后面的代码肯定会出错。
如果断言失败, assert 语句本身就会抛出 AssertionError :
$ python3 err.py
Traceback (most recent call last):
…
AssertionError: n is zero!
程序中如果到处充斥着 assert ,和 print() 相比也好不到哪去。不过,启动Python解释器时可以用 -O 参数来关闭 assert :
$ python3 -O err.py
Traceback (most recent call last):
…
ZeroDivisionError: division by zero
关闭后,你可以把所有的 assert 语句当成 pass 来看。