Python 双函数递归

Python Double Function recursion

我在 VS code 上做一个 pygame 项目,不小心写了下面的代码:

def appear():
    end()

def end():
    appear()

而且我的 pylance 没有显示错误。 我想知道为什么在第 2 行它没有显示 “未定义结束”。

当我 运行 将这一小段代码放在单独的 python 文件中时:

def appear():
    end()

def end():
    appear()

appear()

解释器也没有显示 NameError,而是在四到五秒后显示 RecursionError,如下所示:

...
  File "c:/Users/.../test.py", line 5, in end
    appear()
  File "c:/Users/.../test.py", line 2, in appear
    end()
  File "c:/Users/.../test.py", line 5, in end
    appear()
  File "c:/Users/.../test.py", line 2, in appear
    end()
  File "c:/Users/.../test.py", line 5, in end
    appear()
  File "c:/Users/.../test.py", line 2, in appear
    end()
  File "c:/Users/.../test.py", line 5, in end
    appear()
  File "c:/Users/.../test.py", line 2, in appear
    end()
RecursionError: maximum recursion depth exceeded

这是什么意思??

在Python中,函数必须在调用之前定义(执行,而不仅仅是在另一个定义中使用)。因此,你的函数定义没有问题。好吧,除了创建一个无限递归循环之外...... Python 解释器在执行时提供的错误(“RecursionError:超出最大递归深度”)是由于 Python 只允许某些递归级别,如果我没记错的话,我猜默认情况下是 1000(可以更改)。由于您的函数无限期地相互调用,所有可能的递归都已在这 4 秒内完成。