为什么Python在使用IDLE的shell运行时允许比限制更多的递归深度?

Mis*_*one 6 python recursion

当使用 IDLE shell 3.9.1 运行脚本时(在 IDLE 中编码脚本,然后按 F5),Python 似乎允许比实际定义的限制更多的递归深度(默认 1000,这里是 20 以使其更容易), Win32 上的 Python 3.9.1(tags/v3.9.1:1e5d33e,2020 年 12 月 7 日,17:08:21)[MSC v.1927 64 位 (AMD64)](Windows 10 1909,内部版本 18363.1316)。

用代码:

import sys, inspect
sys.setrecursionlimit(20)
print("Recursion limit:", sys.getrecursionlimit()) #ouputs 20

recursionCounter = 0

def recursive():
    global recursionCounter
    recursionCounter += 1
    print("stack:", len(inspect.stack())) #starts at 5 (IDLE is adding some nested loops) but stops at 36, higher than the recursion limit 
    recursive()

          
try:
    recursive()
except RecursionError:
    print("RecursionError raised. recursionCounter value is:" , recursionCounter) #outputs 33

Run Code Online (Sandbox Code Playgroud)

完整的输出是:

Recursion limit: 20
stack: 5
stack: 6
stack: 7
(...)
stack: 35
stack: 36
RecursionError raised. recursionCounter value is: 33
Run Code Online (Sandbox Code Playgroud)

与降低或增加限制相同,无论递归限制设置为多少,Python 都会比它更深入,超出它相同的量(此处为 13)。

我错过了递归限制或 RecursionError 是否有一些特殊的东西可以解释这种效果?