On Nov 19, 10:21 am, Gilles Ganault <[EMAIL PROTECTED]> wrote: > On 19 Nov 2008 14:37:06 +0000 (GMT), Sion Arrowsmith > > <[EMAIL PROTECTED]> wrote: > >Note very carefully that the "else" goes with the "for" and not the "if". > > Thanks guys.
And if you end up doing this for several different functions, you can factor it out with the following decorator: class MaxRetriesExceededError(Exception): pass def retry(n): def decorator(f): def wrapper(*args, **kwds): for i in xrange(n): r = f(*args, **kwds) if r: return r raise MaxRetriesExceededError return wrapper return decorator If the number of retries is fixed and known at "compile" time, you can use the standard decorator syntax: @retry(5) def CheckIP(): ... If not, just decorate it explicitly at runtime: def CheckIP(): ... n = int(raw_input('Give number of retries:')) CheckIP = retry(n)(CheckIP) HTH, George -- http://mail.python.org/mailman/listinfo/python-list