python如何处理特殊情况?
我学会了如何使用except函数来防止代码崩溃,但我想更好地理解python如何执行它。python如何处理特殊情况?
例如,我有添加一对数字的代码,如果变量nums有两个以上的数字,它应该给AssertionError。
1 def sum_pair(pair):
2 assert len(pair) == 2
3 return pair[0] + pair[1]
4 try:
5 total = sum_pair(nums)
6 print 'The total is', total
7 except AssertionError:
8 print 'Abort'
所以从我的角度来看,python只执行第1,2,4,5,7和8行。 这是理解它的正确方法吗?
谢谢
当发出异常信号时,搜索调用堆栈的try
块的except
子句与该异常的类型匹配。堆栈被解除到那一点,except
子句中的代码被执行,然后在try
块之后继续执行。
因此,当2号线检测到断言失败,它会立即退出sum_pair()
功能并执行来自行8
从技术上讲,它按顺序执行行4,5,1,2,7,8。
我很确定OP意识到这一点,并且只是对执行的行号进行排序。此外,这个答案将更适合作为评论。 – TigerhawkT3
@ TigerhawkT3,够了。当我读到这个问题时,我把它解释为OP想知道执行顺序是否是正确的方式来理解它,但是你的观点很好。 –
恕我直言,'def'行首先被执行,以便识别器'sum_pair'知道解释器。所以执行顺序是1,4,5,2,7,8 –
函数内的语句不被执行,直到调用函数启动代码。所以第2行将不会执行,直到第5行。 – Barmar