Usando pass en una statement else no necesaria

Basándome en la documentación de PEP8, no pude encontrar ninguna referencia con respecto a si debería usar el pass por razones estéticas en el código. Basándome en el siguiente ejemplo, ¿debo conservar esas else o puedo borrarlas? Hasta ahora, la razón principal por la que lo mantengo se basa en el mantra “Lo explícito es mejor que lo implícito”.

 if fields: for i in foo: if i == 'something': print "something" else: pass else: pass 

Sí, puedes / deberías eliminarlos porque no hacen nada.

La comunidad de Python enseña que “explícito es mejor que implícito” siempre que el código explícito haga algo útil. Los else: pass , sin embargo, no aportan nada positivo al código. En su lugar, todo lo que hacen es consumir sin sentido dos líneas cada uno.

Puede eliminarlos de forma segura, ya que no tiene sentido mantener el código a un lado que no sirve para nada:

 if fields: for i in foo: if i == 'something': print "something" 

Un paso más es un código muerto, debe eliminarlo, ya que agrega un ruido innecesario al código y, de todos modos, el código será más claro y fácil de entender sin él.

Se me ocurren pocos casos en los que el pase puede ser útil, los dos últimos son talones temporalmente:

  • Cuando quieras hacer ignorar una excepción aceptable.
  • Cuando necesita insertar un punto de interrupción al final de la función al depurar.
  • Como relleno en una función cuya implementación desea posponer

No puedo imaginar ningún otro caso en el que vaya a usar el pase.

EDITAR:

En algunos casos, al implementar la cadena ifelifelse , y usted tiene una condición común que no requiere ninguna acción, junto con las raras condiciones que requieren acciones específicas, por el bien de la eficiencia de ejecución, puede usar la aprobación después de la primera si

 if : pass elif :  elif :  else:  

La cosa sobre otra cosa es que no son solo una parte de las declaraciones if; aparece en declaraciones de prueba y también para bucles. No ves que se esté usando otra cosa (en este contexto) en esas áreas, ¿verdad?

 try: raw_input("say my name") except: print "Heisenberg" # Meh, this is not needed. else: pass 

Si hacemos un bucle sobre algo y verificamos alguna condición (con el if ), otra cosa agregaría líneas innecesarias.

Aquí hay un bucle para encontrar una carpeta:

 for path in pathlist if os.path.isdir(path): print "Found a folder, yay!" break else: continue 

Claramente, de lo contrario se ejecuta en cada bucle y es inútil. Esto podría evitarse como está implícito en el PEP 8 en sí mismo:

Pero lo más importante: saber cuándo ser inconsistente, a veces la guía de estilo simplemente no se aplica. En caso de duda, utilice su mejor criterio. Mira otros ejemplos y decide qué se ve mejor. ¡Y no dudes en preguntar!
Al aplicar la guía, el código sería menos legible, incluso para alguien que esté acostumbrado a leer el código que sigue a este PEP.