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

Daniel Troeder daniel at admin-box.com
Mi Mär 30 03:42:31 EDT 2016


On 03/28/2016 10:54 PM, Stefan Schwarzer wrote:
> On 2016-03-28 16:03, Daniel Troeder wrote:
>> for item in list():
>>     print item
>> if "item" not in locals():
>>     print "empty"
>>
>> Voraussetzung ist, dass der Variablenname ("item") nicht schon vorher im
>> gleichen oder übergeordneten scope verwendet wird.
> 
> technisch mag das gehen, aber für mich sieht das
> ziemlich "hackish" aus. Ich würde eine direktere
> Lösung (wie einige der vorgestellten) bevorzugen.
Hehe - ja das ist etwas "hackish" :)

In der Realität halte ich mich an "so gut lesbar/explizit wie möglich",
vor allem wenn es nichts idiomatisches gibt wie hier.

Ich würde 1. immer überlegen ob am Konstrukt nicht prinzipiell etwas
falsch ist, wenn eine leere Liste speziell behandelt werden muss.
Und 2. wenn es so ist, dann immer entweder vor der Schleife mit "if not
liste: return foo()" aus der Funktion springen oder wenn es danach
weiter gehen soll die Schleife in if-else einpacken.
Ist nicht elegant aber unmissverständlich und sicher(TM).

Gruß
Daniel



Mehr Informationen über die Mailingliste python-de