Existe-t-il une différence significative entre les deux mots clés python continue
et pass
comme dans les exemples
for element in some_list:
if not element:
pass
et
for element in some_list:
if not element:
continue
Je devrais être au courant?
Oui, ils font des choses complètement différentes. pass
ne fait simplement rien, alors que continue
continue avec l'itération de boucle suivante. Dans votre exemple, la différence deviendrait apparente si vous ajoutiez une autre instruction après le if
: Après avoir exécuté pass
, cette instruction supplémentaire serait exécutée. Après continue
, ce ne serait pas.
>>> a = [0, 1, 2]
>>> for element in a:
... if not element:
... pass
... print element
...
0
1
2
>>> for element in a:
... if not element:
... continue
... print element
...
1
2
Oui, il y a une différence. continue
force la boucle à commencer à la prochaine itération, alors que pass
signifie "il n'y a pas de code à exécuter ici" et continuera jusqu'au reste ou au corps de la boucle.
Exécutez-les et voyez la différence:
for element in some_list:
if not element:
pass
print 1 # will print after pass
for element in some_list:
if not element:
continue
print 1 # will not print after continue
continue
retournera au début de la boucle. pass
continuera le traitement.
si pass est à la fin de la boucle, la différence est négligeable, car le flux reviendrait de nouveau au sommet de la boucle.
Dans votre exemple, il n'y aura aucune différence, car les deux instructions apparaissent à la fin de la boucle. pass
est simplement un espace réservé, en ce sens qu'il ne fait rien (il passe exécution à l'instruction suivante). continue
, par contre, a un but précis: il indique à la boucle de continuer comme si elle venait juste de redémarrer.
for element in some_list:
if not element:
pass
print element
est très différent de
for element in some_list:
if not element:
continue
print element
Oui, il y a une différence. Continue
ignore le reste de l'itération actuelle de la boucle (en revenant au début) Pass
est une déclaration vide qui ne fait rien.
Voir la documentation python
Dans ces exemples, non. Si la déclaration est pas le tout dernier dans la boucle, alors ils ont très effets différents.
x = [1,2,3,4]
for i in x:
if i==2:
pass #Pass actually does nothing. It continues to execute statements below it.
print "This statement is from pass."
for i in x:
if i==2:
continue #Continue gets back to top of the loop.And statements below continue are executed.
print "This statement is from continue."
La sortie est
>>> This statement is from pass.
Encore une fois, laissez exécuter le même code avec des modifications mineures.
x = [1,2,3,4]
for i in x:
if i==2:
pass #Pass actually does nothing. It continues to execute statements below it.
print "This statement is from pass."
for i in x:
if i==2:
continue #Continue gets back to top of the loop.And statements below continue are executed.
print "This statement is from continue."
La sortie est -
>>> This statement is from pass.
This statement is from pass.
This statement is from pass.
This statement is from pass.
This statement is from continue.
This statement is from continue.
This statement is from continue.
Pass ne fait rien. Le calcul n'est pas affecté. Mais continuer revient en haut de la boucle pour procéder au prochain calcul.
Il y a une différence entre eux, continue
ignore l'itération actuelle de la boucle et exécute l'itération suivante.pass
ne fait rien. C’est un espace réservé pour les déclarations vide.
Je préférerais vous donner un exemple, qui clarifiera mieux cela.
>>> for element in some_list:
... if element == 1:
... print "Pass executed"
... pass
... print element
...
0
Pass executed
1
2
>>> for element in some_list:
... if element == 1:
... print "Continue executed"
... continue
... print element
...
0
Continue executed
2
Considérez cela de cette façon:
Pass: Python fonctionne uniquement sur l'indentation! Il n'y a pas d'accolades vides, contrairement à d'autres langues.
Donc, si vous ne voulez rien faire dans le cas où une condition est vraie, il n'y a pas d'autre option que passer.
Continuer: Ceci n'est utile qu'en cas de boucles. Dans le cas où, pour une plage de valeurs, vous ne souhaitez pas exécuter les instructions restantes de la boucle après que cette condition est vérifiée pour cette passe particulière, vous devrez utiliser continue.