Getting around immutable default arguments for recursion
James Mills
prologic at shortcircuit.net.au
Wed Jan 14 18:04:07 EST 2009
On Thu, Jan 15, 2009 at 8:32 AM, dpapathanasiou
<denis.papathanasiou at gmail.com> wrote:
(...)
> It's not exactly right for what I'm doing, b/c the caller always
> expects a list in return.
How about this then:
def get_prior_versions (item_id, priors=None):
"""Return a list of all prior item ids starting with this one"""
global history_db # key = item id, value = prior item id
prior_id = history_db[item_id]
if not prior_id:
if priors:
return priors or []
else:
if priors:
priors.append(prior_id)
else:
priors = [prior_id]
return get_prior_versions(prior_id, priors)
By the way, this is a really badly
written function for 2 reasons:
a) a global should and need not be used.
b) this function could be rewritten without recursion.
cheers
James
More information about the Python-list
mailing list