https://www.oreilly.co.jp/books/9784873117560/ P23~25
Habituellement, les blocs else dans les langages de programmation sont principalement utilisés pour signifier "faites ceci si le bloc supérieur n'est pas implémenté". Mais pas en python
for i in range(3):
print('Loop %d' % i)
else:
print('Else block')
>>>
Loop 0
Loop 1
Loop 2
Else block
De cette manière, le bloc else est exécuté après la fin de l'exécution de la boucle for. De plus, une spécification mystérieuse selon laquelle le bloc else n'est pas exécuté si break est exécuté immédiatement avant.
for i in range(3):
print('Loop %d' % i)
if i == 1:
break
else:
print('Else block')
>>>
Loop 0
Loop 1
De plus, si vous parcourez une séquence vide, le bloc else sera exécuté immédiatement.
for i in []:
print('Never runs')
else:
print('Else block')
>>>
Else block
De plus, s'il échoue au début de la boucle while, il sera exécuté tel quel
while False:
print('Never runs')
else:
print('Else block')
>>>
Else block
Il est utile lors du traitement des informations après une boucle. Par exemple, en vérifiant si deux nombres sont premiers l'un par rapport à l'autre (la promesse n'est pas en dehors de la première place), si la promesse est trouvée sur le chemin pour essayer chaque nombre, on peut juger qu'elle n'est pas premier, mais boucle jusqu'à la fin Si elle n'est pas trouvée, on peut juger qu'elle est brute. Cette spécification est utile ici.
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
Il semble que ce n'est utile que si le bloc précédent a une vérification de rupture.
Si tel est le cas, vous devez écrire une fonction d'assistance distincte pour la rendre plus intelligente.
** Conclusion Si possible, évitez d'utiliser des blocs else dans les boucles **
Recommended Posts