[Python-de] Schleifen die ohne Durchlaufen des Schleifenkörpers beendet wurden

Sven R. Kunze srkunze at mail.de
So Apr 10 08:09:54 EDT 2016


Hallo Marco,

On 09.04.2016 07:59, Marco Bakera wrote:
> Sven R. Kunze schrieb am 24.03.2016 um 20:53:
>> neulich hatten wir wieder das Problem, dass wir gerne etwas in der
>> folgenden Art uns gewünscht hätten:
>>
>> for item in collection:
>>      # do for item
>> empty:
>>      # do when collection is empty
> Könnte man das nicht mit einer IF-Abfrage lösen?

Sicher, wie viele Sprachfeatures. :)

> Warum muss es dafür eine spezielle Syntax geben?

Kleine, nicht notwendigerweise vollständige, Zusammenfassung der 
bisherigen Diskussionsbeiträge:


Dafür:

1) tritt recht häufig in bestimmten Anwendungsfeldern auf
2) andere Sprachen besitzen dieses Features
3) man kann ähnlich argumentieren wie bei "for-else"
4) alle bisher vorgestellten Lösungen funktionieren leider nicht 100%
5) je besser die Lösung, desto komplizierter und unwartbarer ist sie
6) Optimierer können besser mit Syntax-Semantik umgehen als mit einer 
handgehäkelten Lösung

Dagegen:

1) fehlende sinnvolles Keyword: "empty" ist eher eine Variable, "else" 
ist leider vergeben
2) kompliziertere Sprache und erhöhte Wartung des CPython-Quelltexts


Aus meiner Sicht umsetzbare und sinnvoll erscheinende Varianten:

1) verbleibendes Keyword: "not"
2) on-Syntax, vorgeschlagen von Thomas, wobei ich hier auf die 
korrespondierenden Exceptions lauschen würde anstelle die 
vorgeschlagenen Spezialkonstrukte zu definieren


vG
Sven


Mehr Informationen über die Mailingliste python-de