Can python have a stack overflow
error?
Recently I was just letting my mind wander when I came across the question: "can python get the stack overflow
error? Does anyone have any answers?
I searched for the answer but only found java answers. I have used java but its just not my question:
My Reasoning
I initially thought no because python just... works most of the time (like passing an int for a string). It also doesn't have stacks (to my knowledge). But I wasn't sure. Here I am.
Sure it can
the following code will cause a seg fault:
import sys
sys.setrecursionlimit(10_000_000)
def foo():
foo()
On Mac OS, this throws:
Segmentation fault: 11
Which is caused by a stack overflow.
You can, if your recursion limit is too high:
def foo():
return foo()
>>> foo()
Result:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
.......
File "<stdin>", line 2, in foo
RuntimeError: maximum recursion depth exceeded
>>>
The default recursion limit is 10**3
(verifiable via sys.getrecursionlimit
), but you can change it using sys.setrecursionlimit
:
import sys
sys.setrecursionlimit(10**8)
def foo():
foo()
but doing so could be dangerous -- the standard limit is a little conservative, but Python stackframes can be quite big.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With