Respuestas:
Sí, hacen cosas completamente diferentes. pass
simplemente no hace nada, mientras continue
continúa con la siguiente iteración del bucle. En su ejemplo, la diferencia se hará evidente si agrega otra declaración después de if
: Después de ejecutar pass
, esta declaración adicional se ejecutará. Después continue
, no lo haría.
>>> 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
palabra clave no hace nada, solo es útil cuando necesita sintácticamente una suite con sangría, pero no quiere hacer nada. Un ejemplo común es si quiere ignorar alguna excepción, la usa except SomeException: pass
. También hay muchos otros casos de uso. No necesitaría estrictamente una palabra clave para esto, ya que podría usar cualquier otra declaración que no haga nada (por ejemplo, 0
es una declaración perfectamente válida que no tiene un efecto), pero tener una palabra clave para esto le permite ser más explícito sobre no querer hacer nada.
pass
?
Sí, hay una diferencia. continue
fuerza al bucle a comenzar en la siguiente iteración mientras que pass
significa "no hay código para ejecutar aquí" y continuará por el resto o el cuerpo del bucle.
Ejecute estos y vea la diferencia:
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
En su ejemplo, no habrá diferencia, ya que ambas declaraciones aparecen al final del ciclo. pass
es simplemente un marcador de posición, ya que no hace nada ( pasa la ejecución a la siguiente instrucción). continue
, por otro lado, tiene un propósito definido: le dice al ciclo que continúe como si acabara de reiniciar.
for element in some_list:
if not element:
pass
print element
es muy diferente de
for element in some_list:
if not element:
continue
print element
Hay una diferencia entre ellos, continue
omite la iteración actual del bucle y ejecuta la siguiente iteración. pass
no hace nada. Es un marcador de posición de declaración vacía.
Prefiero darle un ejemplo, que aclarará esto mejor.
>>> 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
Sí, hay una diferencia. Continue
en realidad se salta el resto de la iteración actual del bucle (volviendo al principio). Pass
es una declaración en blanco que no hace nada.
Ver los documentos de Python
En esos ejemplos, no. Si la declaración no es la última en el ciclo, entonces tienen efectos muy diferentes.
Diferencia entre pasar y continuar en un ciclo for:
Entonces, ¿por qué pasar en python?
Si desea crear una clase, método o bloque vacío.
Ejemplos:
class MyException(Exception):
pass
try:
1/0
except:
pass
sin 'pasar' en los ejemplos anteriores arrojará 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 salida es
>>> This statement is from pass.
Nuevamente, deje correr el mismo código con cambios menores.
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 salida es -
>>> 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.
El pase no hace nada. La computación no se ve afectada. Pero continuar vuelve al principio del ciclo para avanzar con el siguiente cálculo.
Considéralo de esta manera:
Pase: ¡ Python funciona únicamente en sangría! No hay llaves vacías, a diferencia de otros idiomas.
Por lo tanto, si no desea hacer nada en caso de que una condición sea verdadera, no hay otra opción que pasar.
Continuar: esto es útil solo en caso de bucles. En caso de que, para un rango de valores, no desee ejecutar las declaraciones restantes del bucle después de que esa condición sea verdadera para ese pase en particular, entonces deberá usar continuar.
pass
si la instrucción es True
y realizar la operación si es así False
. Esto permite un escaneo eficiente de listas multipropósito.
pass
podría usarse en escenarios cuando necesita algunas funciones, clases o bucles vacíos para futuras implementaciones, y no hay ningún requisito para ejecutar ningún código.
continue
se usa en escenarios cuando no cuando se cumple alguna condición dentro de un ciclo y necesita omitir la iteración actual y pasar a la siguiente.
while True:; pass # Busy-wait for keyboard interrupt (Ctrl+C)
en los documentos de Python me confundió en el camino, que no me pareció que el tiempo fuera claro, se comporta de manera equivalente a continuar en este caso o se pretendía algo más. La primera oración "La declaración de aprobación no hace nada". caracteriza todas las respuestas a mi pregunta, pero de alguna manera no me llamó la atención.