[Tutor] recursion odities accross diferent versions of the 2.4.1 interpreter
Brian van den Broek
bvande at po-box.mcgill.ca
Tue Jul 12 23:08:09 CEST 2005
Hi all,
I'm playing about with some recursive functions where I am getting
near the recursion limit. This caused me to do a test, and I am
puzzled by the different results when run in the prompt, IDLE and
PythonWin.
My simple test code is:
>>> c = 0
>>> def recursion_test():
global c
c+=1
try:
recursion_test()
except:
print c
When this very same code is run in the different interpreters (or,
different Python environments; I'm not sure of the correct terminology
here) I get different results. I'll show those, skipping the identical
code that created them:
Python 2.4.1 (#65, Mar 30 2005, 09:13:57) [MSC v.1310 32 bit (Intel)]
on win32
>>> recursion_test()
999
>>>
IDLE 1.1.1
>>> recursion_test()
996996
PythonWin 2.4.1 (#65, Mar 30 2005, 09:13:57) [MSC v.1310 32 bit
(Intel)] on win32.
>>> recursion_test()
993
993
993
>>>
That the printed numbers differ doesn't worry me; I assume since IDLE
and PythonWin are implemented in Python, the overhead of running them
eats up a recursion level or 6, according to how exactly they are
implemented.
But the two puzzles are:
1) Why the difference in printing format (IDLE prints twice on one
line, PythonWin thrice with different alignment)?
and,
2) With (and only with) IDLE, I never regain control of the shell
(note the lack of a terminal '>>>' and have to restart to do anything
else. That feels bug-like.
It seems a fair bet that the hypothesis for why the printed numbers
are different is also at play in the last two puzzles. But, I was
wondering if anyone could say something to shed a bit more light. In
particular, is my sense of possible bug well grounded?
Thanks and best,
Brian vdB
More information about the Tutor
mailing list