Réponses:
Oui, ils font des choses complètement différentes. pass
ne fait simplement rien, tout en continue
poursuivant avec l'itération de boucle suivante. Dans votre exemple, la différence deviendrait apparente si vous ajoutiez une autre instruction après if
: Après l'exécution pass
, cette instruction supplémentaire serait exécutée. Après continue
, ce ne serait plus le cas.
>>> 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
pass
mot clé ne fait rien, il n'est utile que lorsque vous avez besoin syntaxiquement d'une suite en retrait, mais que vous ne voulez rien faire. Un exemple courant est que si vous souhaitez ignorer une exception, vous utilisez except SomeException: pass
. Il existe également de nombreux autres cas d'utilisation. Vous n'auriez pas strictement besoin d'un mot-clé pour cela, car vous pourriez utiliser n'importe quelle autre instruction qui ne fait rien (par exemple, 0
une instruction parfaitement valide qui n'a pas d'effet), mais avoir un mot-clé pour cela vous permet d'être plus explicite de ne vouloir rien faire.
pass
?
Oui, il y a une différence. continue
force la boucle à démarrer à la prochaine itération tandis que pass
signifie "il n'y a pas de code à exécuter ici" et continuera à travers le reste ou le 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
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 l' exécution à l'instruction suivante). continue
, d'autre part, a un but précis: il dit à la boucle de continuer comme si elle venait 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
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. Il s'agit d'un espace réservé de déclaration vide.
Je préfère 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
Oui, il y a une différence. Continue
saute en fait le reste de l'itération actuelle de la boucle (retour au début). Pass
est une déclaration vide qui ne fait rien.
Voir les documents python
Dans ces exemples, non. Si l'instruction n'est pas la toute dernière de la boucle, alors ils ont des effets très différents.
Différence entre passer et continuer dans une boucle for:
Alors pourquoi passer en python?
Si vous souhaitez créer une classe, une méthode ou un bloc vide.
Exemples:
class MyException(Exception):
pass
try:
1/0
except:
pass
sans 'pass' dans les exemples ci-dessus, lancera IndentationError.
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.
Considérez-le de cette façon:
Pass: Python fonctionne uniquement sur l'indentation! Il n'y a pas d'accolades vides, contrairement aux autres langues.
Donc, si vous ne voulez rien faire au 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, pour une plage de valeurs, vous ne voulez pas exécuter les instructions restantes de la boucle après que cette condition est vraie pour cette passe particulière, alors vous devrez utiliser continue.
pass
si l'instruction est True
et effectuez l'opération si elle l'est False
. Cela permet une analyse efficace des listes polyvalentes.
pass
pourrait être utilisé dans des scénarios lorsque vous avez besoin de fonctions, de classes ou de boucles vides pour de futures implémentations, et qu'il n'y a aucune exigence d'exécution de code.
continue
est utilisé dans les scénarios où non lorsqu'une condition est remplie dans une boucle et que vous devez ignorer l'itération en cours et passer à la suivante.
while True:; pass # Busy-wait for keyboard interrupt (Ctrl+C)
dans les documents en python, je suis confus dans le chemin, que je ne trouve pas qu'il fait clair qu'il se comporte de manière équivalente à continuer dans ce cas ou quelque chose d'autre était prévu. La première phrase "La déclaration de passage ne fait rien." caractérise toutes les réponses à ma question, mais d'une manière ou d'une autre, cela n'a pas attiré mon attention.