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
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
- Diez B. Roggisch (29.10.2009 23:39)
- Jan-Herbert Damm (30.10.2009 16:25)
- Thomas Rachel (30.10.2009 16:54)
- Jan-Herbert Damm (30.10.2009 17:23)
- Thomas Rachel (30.10.2009 18:57)
- Stefan Behnel (30.10.2009 07:43)
