如何在 Python 中獲取和增加最大遞迴深度

  1. 使用 getrecursionlimit() 函式獲取 Python 中的最大遞迴深度
  2. 使用 setrecursionlimit() 函式在 Python 中設定最大遞迴深度

本文將介紹在 Python 中使用 getrecursionlimit()setrecursionlimit() 函式獲取和增加最大遞迴深度的方法。

使用 getrecursionlimit() 函式獲取 Python 中的最大遞迴深度

什麼是遞迴?遞迴是重複的過程。

在 Python 中,我們對遞迴函式有一些限制。它告訴我們函式將重複多少次。我們可以使用 getrecursionlimit() 函式來獲得最大的遞迴深度。正確的語法是。

sys.getrecursionlimit()

此方法不接受任何引數。

下面的程式顯示了我們如何在 Python 中使用這個方法來獲取最大遞迴限制。

import sys
print(sys.getrecursionlimit())

輸出:

3000

使用 setrecursionlimit() 函式在 Python 中設定最大遞迴深度

如果遞迴深度超過了 Python 中預設的最大遞迴深度,就會丟擲一個 RecursionError。讓我們看看下面的例子。

def Test(i):
    if i > 0:
        return Test(i-1)+1
    else:
        return 0

Test(5000)

輸出:

Traceback (most recent call last):
  File "C:/Test/test.py", line 7, in <module>
    Test(5000)
  File "C:/Test/test.py", line 3, in Test
    return Test(i-1)+1
  File "C:/Test/test.py", line 3, in Test
    return Test(i-1)+1
  File "C:/Test/test.py", line 3, in Test
    return Test(i-1)+1
  [Previous line repeated 1021 more times]
  File "C:/Test/test.py", line 2, in Test
    if i > 0:
RecursionError: maximum recursion depth exceeded in comparison

我們需要增加最大遞迴深度來解決上述問題。我們使用 setrecursionlimit() 函式來設定遞迴限制。使用該函式的正確語法如下。

sys.setrecursionlimit(limit)

這個方法只接受一個引數。其引數的詳細情況如下。

引數名稱 說明
limit 強制 這就是我們要設定的限制

下面的程式展示了我們如何在 Python 中使用這個方法來設定遞迴限制。

import sys
sys.setrecursionlimit(5000)
print(sys.getrecursionlimit())

輸出:

5000