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 秒内完成。
我在 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 秒内完成。