Scope Problem
Peter Otten
__peter__ at web.de
Thu Aug 5 08:45:27 EDT 2004
Nickolay Kolev wrote:
Python doesn't support tail recursion; your algorithm is not only
inefficient but incorrect. The number of allowed recursion levels is
significantly below the maximum number of list entries.
>>> import sys
>>> sys.setrecursionlimit(10) # reduced for demonstration purposes
>>> def index(seq, value, n=0):
... try:
... if seq[n] == value:
... return n
... else:
... return index(seq, value, n+1)
... except IndexError:
... return -1
...
>>> index(range(5), "a")
-1
>>> index(range(10), "a")
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "<stdin>", line 6, in index
File "<stdin>", line 6, in index
File "<stdin>", line 6, in index
File "<stdin>", line 6, in index
File "<stdin>", line 6, in index
File "<stdin>", line 6, in index
File "<stdin>", line 6, in index
File "<stdin>", line 6, in index
File "<stdin>", line 6, in index
RuntimeError: maximum recursion depth exceeded
The
def f(value=None):
if value is None:
# set real default
idiom is only needed for mutable default values.
> @Irmen
> @Daniel
I see finally someone is embracing the decorator style slated for 2.4 :-)
Peter
More information about the Python-list
mailing list