I wrote: > The recursion limit (the value of it anyhow) is an implementation detail. Martin replies: > No, it is not. In standard Python, the program > > def rec(n): > rec(n-1) > > n=1 > while 1: > try: > rec(n) > except RuntimeError: > break > print "The recursion limit is", n > > will terminate. In the modified Python, it will not terminate. > It is a change in behaviour, and thus a language feature. First, I'm going to make a slight modification to your program, since I want a version that actually does display the recursion limit. I tried the following program instead: >>> def rec(n): ... print n ... rec(n+1) ... >>> rec(1) Running this in Jython 2.1 (a well-known implementation of the Python language) produced the numbers from 1 to 888, then immediately exited. Running it on CPython 2.3 produced the numbers from 1 to 999, then a traceback that looked like this: Traceback (most recent call last): File "<stdin>", line 1, in ? File "<stdin>", line 3, in rec File "<stdin>", line 3, in rec File "<stdin>", line 3, in rec File "<stdin>", line 3, in rec File "<stdin>", line 3, in rec File "<stdin>", line 3, in rec [... etc for a total of about 1000 lines ...] File "<stdin>", line 3, in rec File "<stdin>", line 3, in rec File "<stdin>", line 3, in rec File "<stdin>", line 3, in rec RuntimeError: maximum recursion depth exceeded It then returned me to the interactive prompt. I presume that since the behavior was different, CPython must not actually be a correct implementation of the Python language, right? Not-all-differences-are-language-differences lly yours, Michael Chermside
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4