web-dev-qa-db-fra.com

Existe-t-il une différence entre `continue` et` pass` dans une boucle for en python?

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?

195
Aufwind

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
291
Sven Marnach

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
55
user130076

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.

14
tMC

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
7
multipleinterfaces

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

4
froadie

Dans ces exemples, non. Si la déclaration est pas le tout dernier dans la boucle, alors ils ont très effets différents.

3
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.

1

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
1
Walk

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. 

0
Vaishali