Increase maximum recursion depth in python using Context Manager

- 2 mins


Let’s have a look at below example, suppose I want to calculate the Fibonacci of a number -

def fib_cal(fib_num, memo):
    if memo[fib_num] is not None:
        return memo[fib_num]
    elif fib_num == 1 or fib_num == 2:
        result = 1
        result = fib_cal(fib_num-1, memo) + fib_cal(fib_num-2, memo)
    memo[fib_num] = result
    return result

def get_fibonacci(fib_num):
    memo = [None] * (fib_num+1)
    return fib_cal(fib_num, memo)


Output- 354224848179261915075

class RecursionLimit: def init(self, limit): self.limit = limit self.cur_limit = sys.getrecursionlimit()

def __enter__(self):

def __exit__(self, exc_type, exc_value, exc_traceback):

MAX_LIMIT = 10000

with RecursionLimit(MAX_LIMIT): print(fibonacci(3000)) ``` Output- 4106158863079712603335683787192671052201251086373692524……..6000

The __enter__() returns the resource that needs to be managed and the __exit__() does not return anything but performs the cleanup operations.

Context-managers can be used for other purposes also like- simple file I/O, like opening and closing sockets, implementing set-up and tear-down functionality during testing.

I hope you enjoyed reading this article, If you have any suggestions on your mind, please let me know in the mail.

Get Updates on Telegram

We share the every post update using our telegram bot,

Powered by Go Weasel