https://www.oreilly.co.jp/books/9784873117560/ P23~25
Normalerweise werden sonst Blöcke in Programmiersprachen hauptsächlich verwendet, um "dies zu tun, wenn der obere Block nicht implementiert ist". Aber nicht in Python
for i in range(3):
print('Loop %d' % i)
else:
print('Else block')
>>>
Loop 0
Loop 1
Loop 2
Else block
Auf diese Weise wird der else-Block ausgeführt, nachdem die for-Schleife die Ausführung abgeschlossen hat. Außerdem eine mysteriöse Angabe, dass der else-Block nicht ausgeführt wird, wenn break unmittelbar zuvor ausgeführt wird.
for i in range(3):
print('Loop %d' % i)
if i == 1:
break
else:
print('Else block')
>>>
Loop 0
Loop 1
Wenn Sie eine leere Sequenz durchlaufen, wird der else-Block außerdem sofort ausgeführt.
for i in []:
print('Never runs')
else:
print('Else block')
>>>
Else block
Wenn es am Anfang der while-Schleife fehlschlägt, wird es so ausgeführt, wie es ist
while False:
print('Never runs')
else:
print('Else block')
>>>
Else block
Dies ist nützlich, wenn Informationen nach einer Schleife verarbeitet werden. Wenn Sie beispielsweise prüfen, ob zwei Zahlen zueinander Primzahlen haben (das Versprechen liegt nicht außerhalb des ersten Platzes), und wenn das Versprechen auf dem Weg zum Ausprobieren jeder Zahl gefunden wird, kann beurteilt werden, dass es sich nicht um Primzahlen handelt, sondern sich bis zum Ende wiederholt Wenn es nicht gefunden wird, kann beurteilt werden, dass es roh ist. Diese Spezifikation ist hier nützlich.
a = 4
b = 9
for i in range(2, min(a, b) + 1):
print('Tasting', i)
if a % i == 0 and b % i ==0:
print('Not coprime')
break
else:
print('Coprime')
>>>
Tasting 2
Tasting 3
Tasting 4
Coprime
Es scheint, dass es nur nützlich ist, wenn der vorherige Block eine Unterbrechungsprüfung hat.
In diesem Fall sollten Sie eine separate Hilfsfunktion schreiben, um sie intelligenter zu gestalten.
** Fazit Vermeiden Sie nach Möglichkeit die Verwendung von else-Blöcken in Schleifen **
Recommended Posts