¿Hay alguna diferencia entre “pasar” y “continuar” en un bucle for en Python?

4 minutos de lectura

Avatar de usuario de Aufwind
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?

  • @ 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


Avatar de usuario de Sven Marnach
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 continueno 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, utiliza except 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.

Avatar de usuario de Joby Wilson Mathews
Joby Wilson Mathews

Diferencia entre pasar y continuar en un bucle for:

¿Hay alguna diferencia entre "pasar" y "continuar" en un bucle for en Python?

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). continuepor 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

avatar de usuario de froadie
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

¿Ha sido útil esta solución?