[Python-de] Re: Problem mit einer Schleife

holger krekel pyth at devel.trillke.net
Fri Sep 27 15:46:29 EDT 2002


Andreas Grytz wrote:
> On Fri, Sep 27, 2002 at 11:48:20AM +0000, Gerhard Häring wrote:
> > Andreas Grytz wrote:
> > ;-) Vielleicht solltest du dich für eines von beiden entscheiden?
> > 
> > > 
> > >  
> > > Jetzt passiert folgendes: Die Abfrage beendet sich erst, wenn ich drei
> > > mal hintereinander "q" eingebe. Hat jemand daür eine Erklärung?
> > 
> > Mit q springst du aus einer Rekursionsebene hinaus. Du hast aber scheinbar
> > vorher schon zwei Mal getURL() aufgerufen.
> 
> *die Hand vor den Schaedel schlag*
> 
> Umpf, na klar. Vielen Dank für die Erleuchtung.

Wenn du uebrigens aus einer Rekursion direkt ausbrechen willst, 
kannst du auch den Exception-Mechanismus nutzen:

    class BailOut(Exception):
        """ 'Exception' Class signalling end Recursion """
        pass

und dann tief in einer Rekursion:

    raise BailOut, "eine message"

und dann natuerlich auf der start-ebene:

    except BailOut, obj:
        print "program finished", obj

oder so aehnlich.  Das  wuerde ich dir allerdings erst anraten,
wenn du ansonsten mit den Kontrollkonstrukten in python gut 
vertraut bist. 

Der Vorteil dieser Art von Kontrollfluss ist, dass du nicht
an allen Rekursions-Aufrufstellen abfragen musst:

    res = some_recursive_function_called_somewhere()
    if res is some_special_value_for_example_None:
        return res

sonder du kannst einfach die funktion aufrufen und nur ganz oben
die "Exception" auffangen.  

gruss,

    holger




More information about the Python-de mailing list