Estoy en el proceso de aprender Python y he llegado a la sección sobre la passdeclaración. La guía que estoy usando lo define como una Nulldeclaración que se usa comúnmente como marcador de posición.
Sin embargo, todavía no entiendo completamente lo que eso significa. ¿Alguien puede mostrarme una situación simple / básica donde se passusaría la declaración y por qué es necesaria?

passque sería útil cuando desea anular un método en una subclase para no hacer nada.passelexceptbloque es muy útil.Respuestas:
Supongamos que está diseñando una nueva clase con algunos métodos que aún no desea implementar.
Si dejaras de lado
pass, el código no se ejecutaría.Entonces obtendrías un:
Para resumir, la
passdeclaración no hace nada en particular, pero puede actuar como un marcador de posición, como se demuestra aquí.fuente
return, aunque con una ligera pérdida de claridad.pass, pero todavía no entiendo realmente lo que hace. ¿Hay un uso para esto en el código de producción? A partir de su ejemplo, optaría por no agregar ese método hasta que esté listo para implementarlo, o simplemente lo haríareturn.Python tiene el requisito de que los bloques de código sintáctico (después de
if,except,def,classetc.) no pueden estar vacíos. Sin embargo, los bloques de código vacíos son útiles en una variedad de contextos diferentes, como en los ejemplos a continuación, que son los casos de uso más frecuentes que he visto.Por lo tanto, si no se supone que suceda nada en un bloque de código,
passse necesita a para que dicho bloque no produzca unIndentationError. Alternativamente, se puede usar cualquier declaración (incluyendo solo un término para ser evaluado, como elEllipsisliteral...o una cadena, la mayoría de las veces una cadena de documentos), peropassdeja en claro que, de hecho, no se supone que suceda nada, y no necesita ser realmente evaluado y (al menos temporalmente) almacenado en la memoria.Ignorando (todos o) un cierto tipo de
Exception(ejemplo dexml):Nota: Ignorar todos los tipos de aumentos, como en el siguiente ejemplo
pandas, generalmente se considera una mala práctica, ya que también detecta excepciones que probablemente deberían transmitirse a la persona que llama, por ejemplo,KeyboardInterruptoSystemExit(o inclusoHardwareIsOnFireError- ¿Cómo sabes que no eres? ejecutándose en un cuadro personalizado con errores específicos definidos, que algunas aplicaciones de llamadas querrían saber?En cambio, usar al menos
except Error:o en este caso preferiblementeexcept OSError:se considera una práctica mucho mejor. Un análisis rápido de todos los módulos de Python que he instalado me dio que más del 10% de todas lasexcept ...: passdeclaraciones capturan todas las excepciones, por lo que sigue siendo un patrón frecuente en la programación de Python.Derivar una clase de excepción que no agrega un nuevo comportamiento (por ejemplo, en
scipy):Del mismo modo, las clases destinadas a la clase base abstracta a menudo tienen un vacío explícito
__init__u otros métodos que se supone que derivan las subclases. (por ejemplopebl)La prueba de ese código se ejecuta correctamente para algunos valores de prueba, sin preocuparse por los resultados (de
mpmath):En las definiciones de clase o función, a menudo una cadena de documentación ya está en su lugar como la declaración obligatoria que debe ejecutarse como la única cosa en el bloque. En tales casos, el bloque puede contener
passademás de la cadena de documentación para decir "Esto no pretende hacer nada", por ejemplo enpebl:En algunos casos,
passse usa como marcador de posición para decir "Este método / clase / if-block / ... aún no se ha implementado, pero este será el lugar para hacerlo", aunque personalmente prefiero elEllipsisliteral...para diferenciar estrictamente entre esto y la intencional "no-op" en el ejemplo anterior. ( Tenga en cuenta que el literal de puntos suspensivos es una expresión válida solo en Python 3 )Por ejemplo, si escribo un modelo a grandes rasgos, podría escribir
donde otros podrían tener
antes de
como un recordatorio para completar la
update_agentfunción en un momento posterior, pero ejecute algunas pruebas para ver si el resto del código se comporta como se esperaba. (Una tercera opción para este caso esraise NotImplementedError. Esto es útil en particular para dos casos: "Este método abstracto debe ser implementado por cada subclase, no hay una forma genérica de definirlo en esta clase base" , o "Esta función, con este nombre, aún no está implementado en esta versión, pero así es como se verá su firma " )fuente
Además de su uso como marcador de posición para funciones no implementadas,
passpuede ser útil para completar una instrucción if-else ("explícito es mejor que implícito").Por supuesto, en este caso, uno probablemente usaría en
returnlugar de la asignación, pero en los casos en que se desea la mutación, esto funciona mejor.El uso de
passaquí es especialmente útil para advertir a los futuros mantenedores (¡incluido usted mismo!) De no poner pasos redundantes fuera de las declaraciones condicionales. En el ejemplo anterior,flagse establece en los dos casos mencionados específicamente, pero no en elelsecaso. Sin usarpass, un futuro programador podría moverseflag = Truefuera de la condición, configurando asíflagen todos los casos.Otro caso es con la función repetitiva que a menudo se ve al final de un archivo:
En algunos archivos, puede ser bueno dejar eso allí
passpara permitir una edición más fácil más adelante y hacer explícito que no se espera que suceda nada cuando el archivo se ejecuta por sí solo.Finalmente, como se menciona en otras respuestas, puede ser útil no hacer nada cuando se detecta una excepción:
fuente
flag = Falseantes delif ... elifbloque para evitar errores oscuros de "NameError: name 'flag' no está definido" más adelante. Con respecto al segundo ejemplo, parece extraño tener que agregarif __name__ == "__main__": passa la mayoría de los archivos Python que no hacen nada cuando se ejecutan directamente (que es el caso cuando está escribiendo código modular). Con Python> = 3.0, debe usar...(puntos suspensivos) en lugar depassindicar bloques "finalizar más tarde".La mejor y más precisa forma de pensar
passes decirle explícitamente al intérprete que no haga nada. Del mismo modo el siguiente código:significa "si llamo a la función foo (x, y), sume los dos números que representan las etiquetas x e y y devuelva el resultado",
significa "Si llamo a la barra de funciones (), no haga absolutamente nada".
Las otras respuestas son bastante correctas, pero también son útiles para algunas cosas que no implican mantener el lugar.
Por ejemplo, en un poco de código en el que trabajé recientemente, era necesario dividir dos variables y era posible que el divisor fuera cero.
Obviamente, producirá un ZeroDivisionError si b es cero. En esta situación particular, dejar c como cero era el comportamiento deseado en el caso de que b fuera cero, así que utilicé el siguiente código:
Otro uso menos estándar es un lugar útil para poner un punto de interrupción para su depurador. Por ejemplo, quería un poco de código para entrar en el depurador en la vigésima iteración de una declaración for ... in. Entonces:
con el punto de quiebre en el pase.
fuente
def bar(): passno hace "absolutamente nada". Todavía regresaNone, implícitamente.Un caso de uso común donde se puede usar 'tal cual' es anular una clase solo para crear un tipo (que de otro modo es el mismo que la superclase), por ejemplo
Para que pueda plantear y atrapar
Errorexcepciones. Lo que importa aquí es el tipo de excepción, en lugar del contenido.fuente
passen Python básicamente no hace nada, pero a diferencia de un comentario, el intérprete no lo ignora. Por lo tanto, puede aprovecharlo en muchos lugares al convertirlo en un marcador de posición:1: se puede usar en clase
2: Se puede usar en bucles y declaraciones condicionales:
3: se puede utilizar en la función:
passse usa principalmente cuando el programador no quiere dar implementación en este momento, pero aún quiere crear una determinada clase / función / declaración condicional que se pueda usar más adelante. Dado que el intérprete de Python no permite la declaración de clase / función / condicional en blanco o sin implementar, da un error:passse puede usar en tales escenarios.fuente
Puede decir que pasar significa operación NOP (sin operación). Obtendrá una imagen clara después de este ejemplo: -
Programa C
Ahora, cómo escribirás eso en Python: -
Pero su código dará error porque requiere un bloque sangrado después de elif . Aquí está el papel de la palabra clave pass .
Ahora creo que está claro para ti.
fuente
&&operador no existe en PythonMe gusta usarlo cuando apago las pruebas. Muchas veces soy consciente de lo que me gustaría probar, pero no sé cómo hacerlo. El ejemplo de prueba se parece a lo que sugirió sebastian_oe
fuente
assert Falseo deassert 0esta manera siempre se te indicará que debes agregar una implementación :)La declaración de aprobación no hace nada. Se puede usar cuando se requiere una declaración sintácticamente pero el programa no requiere ninguna acción.
fuente
Honestamente, creo que los documentos oficiales de Python lo describen bastante bien y proporcionan algunos ejemplos:
fuente
como decía el libro, solo lo uso como marcador de posición temporal, es decir,
y luego complete el escenario donde
var == 2000fuente
Pass se refiere a ignorar ... tan simple como es ... si la condición dada es verdadera y la siguiente instrucción es pass, ignora ese valor o iteración y pasa a la siguiente línea ..... Ejemplo
Salida: Imprime todos los números impares del 1-100
Esto se debe a que el módulo de número par es igual a cero, por lo tanto, ignora el número y pasa al siguiente número, ya que el módulo de números impares no es igual a cero, la parte Else del bucle se ejecuta y se imprime
fuente
SyntaxError. Además, este no es un buen usopassporque simplemente podría hacerlofor i in range(1,100):print(i)if i%2else""Aquí hay un ejemplo en el que extraía datos particulares de una lista en la que tenía varios tipos de datos (así es como lo llamaría en R, perdón si es una nomenclatura incorrecta) y quería extraer solo datos enteros / numéricos y NO caracteres. .
Los datos se veían así:
Quería eliminar todos los caracteres alfabéticos, así que hice que la máquina lo hiciera subconjustando los datos y "pasando" los datos alfabéticos:
fuente
La sentencia pass en Python se usa cuando se requiere una sentencia sintácticamente pero no desea que se ejecute ningún comando o código.
La sentencia pass es una operación nula; No pasa nada cuando se ejecuta. El pase también es útil en lugares donde su código eventualmente irá, pero aún no se ha escrito (por ejemplo, en trozos, por ejemplo):
`Ejemplo:
Esto producirá el siguiente resultado:
El código anterior no ejecuta ninguna instrucción o código si el valor de la letra es 'h'. La declaración de aprobación es útil cuando ha creado un bloque de código pero ya no es necesario.
Luego puede eliminar las declaraciones dentro del bloque pero dejar que el bloque permanezca con una declaración de paso para que no interfiera con otras partes del código.
fuente
pass se usa para evitar errores de sangría en python Si tomamos lenguajes como c, c ++, java, tienen llaves como
Pero en python usaba sangría en lugar de llaves, así que para evitar tales errores usamos pass. Recordaba mientras jugabas un cuestionario y
Programa de ejemplo,
fuente