424*_*247 2 python recursion python-3.6
我试过谷歌搜索但无法找到类似的问题.我确信这是愚蠢的,但我似乎无法得到它.
我有以下代码:
def f(a):
try:
4 / a
except:
f(2)
else:
print('else')
finally:
print("finally")
Run Code Online (Sandbox Code Playgroud)
当我用0作为参数调用函数时:f(0)
它返回:
else
finally
finally
Run Code Online (Sandbox Code Playgroud)
所以在我的理解中,这是应该发生的事情:
elsefinally为什么要finally打印两次?
当您调用时f(0),finally块被调用两次.一次呼叫f(2),然后再次呼叫f(0).
这是因为4 / 0导致异常,触发对fvia 的第二次调用f(2).
finally将首先调用f(2),然后调用f(0)- 因为f(2)从中调用f(0).
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |