nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

indent - unklarheit

Von: Jan-Herbert Damm (jan-h-damm@web.de) [Profil]
Datum: 29.10.2009 23:32
Message-ID: <7kujfmF3bv33cU1@mid.individual.net>
Newsgroup: de.comp.lang.python
hallo zusammen,

Ich stehe mal wieder auf dem schlauch.

Mein lehrbuch bietet mir diese methode an:

----zitat----

def intersect(self, *others):
res = []
for x in self:
for other in others:
if x not in other: break
# den folgenden indent von else verstehe ich nicht:
else:
res.append(x)
return Set(res)

----ende zitat----

Müsste sich das else nicht auf das vorhergehende if beziehen? Meine version
(die auch zu funktionieren scheint) ist so:

----zitat---

def intersect(self, *others):
res = []
for x in self:
for other in others:
if x not in other:
break
else:
res.append(x)
return Set(res)

----ende zitat----

Nach meinen tests kann das else ungestraft sogar noch einen indent weiter
links stehen. Wie kann das sein?

Anmerkung: Ich habe dazu
http://www.secnetix.de/olli/Python/block_indentation.hawk
gelesen und dort ist es auch merkwürdig:

----zitat----

/*  Warning:  bogus C code!  */

if (some condition)
if (another condition)
do_something(fancy);
else
this_sucks(badluck);

-----ende zitat----

An diesem negativbeispiel wird erklärt, daß das else
irreführend steht, weil
es sich auf das nächstgelegene if beziehen muss. Und am ende steht dieses
positiv beispiel für python:

---zitat---

>>> if foo:
...     if bar:
...         x = 42
... else:
...   print foo
...

-----ende zitat---

das hat mich endgültig verwirrt.

freundliche grüße

jan

[ Auf dieses Posting antworten ]

Antworten