Aufwind
¿Hay alguna diferencia significativa entre las dos palabras clave de Python? continue
y pass
como en los ejemplos
for element in some_list:
if not element:
pass
y
for element in some_list:
if not element:
continue
debo estar al tanto?
Sven Marnach
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ía evidente si agregara otra declaración después de la if
: Después de ejecutar pass
, esta instrucción adicional se ejecutaría. Después continue
no lo serí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
-
Estoy totalmente de acuerdo con tu respuesta. pero todavía tengo preguntas sobre la palabra clave pass, ¿es necesaria? y necesario, pero ¿por qué? Gracias
– Hardik Gajjar
9 de noviembre de 2015 a las 2:52
-
@HardikGajjar: Desde el
pass
palabra clave no hace nada, solo es útil cuando sintácticamente necesita una suite con sangría, pero no quiere hacer nada. Un ejemplo común es si desea ignorar alguna excepción, utilizaexcept SomeException: pass
. Hay muchos otros casos de uso también. 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 efecto), pero tener una palabra clave para esto te permite ser más explícito acerca de no querer hacer nada.– Sven Marnach
11 de noviembre de 2015 a las 9:04
-
@SvenMarnach está mal visto estilísticamente tratar las excepciones con
pass
?– 3 hoyos
22 de marzo de 2018 a las 19:31
-
@MikePalmice En absoluto.
– Mattwmaster58
24 de marzo de 2018 a las 19:24
-
La palabra clave ‘pasar’ también se puede usar en códigos esqueléticos que alguien puede reenviar a un colaborador para evitar el error que muestra el intérprete de Python en caso de que deje una declaración de rama (bucles, condicionales, funciones) vacía para que el intérprete no interrumpa y el colaborador puede obtener las clases estándar o las definiciones de funciones que podrían ser utilizadas por otros colaboradores simultáneamente para trabajar en un código fuente o en cualquier proyecto que implique colaboración.
– Syed M Abbas Haider Taqvi
21 de septiembre a las 7:10
Sí, hay una diferencia. continue
obliga al ciclo a comenzar en la siguiente iteración mientras pass
significa “no hay código para ejecutar aquí” y continuará por el resto del 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
continue
saltará de nuevo a la parte superior del bucle. pass
seguirá procesando.
si el paso está al final del ciclo, la diferencia es insignificante ya que el flujo regresaría a la parte superior del ciclo de todos modos.
Joby Wilson Mathews
Diferencia entre pasar y continuar en un bucle 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 ‘aprobar’ en los ejemplos anteriores generará IndentationError.
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 (no pasa ejecución a la sentencia siguiente). continue
por otro lado, tiene un propósito definido: le dice al ciclo que Seguir como si acabara de reiniciarse.
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
salta la iteración actual del ciclo y ejecuta la siguiente iteración.pass
no hace nada. Es un marcador de posición de declaración vacío.
Preferiría ponerte un ejemplo, que aclarará esto más mejor.
>>> some_list = [0, 1, 2]
... 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
froadie
Sí, hay una diferencia. Continue
en realidad 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 el documentos de Python
@ S. Lott: El ejemplo:
while True:; pass # Busy-wait for keyboard interrupt (Ctrl+C)
en el documentos de Python me confundió en el camino, que no lo encontré claro si se comporta equivalente a continuar en este caso o se pretendía otra cosa. la primera frase “La declaración de pase no hace nada”. caracteriza todas las respuestas a mi pregunta, pero de alguna manera no me llamó la atención.– Aufwind
28 de febrero de 2012 a las 15:52