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").
def some_silly_transform(n):
# Even numbers should be divided by 2
if n % 2 == 0:
n /= 2
flag = True
# Negative odd numbers should return their absolute value
elif n < 0:
n = -n
flag = True
# Otherwise, number should remain unchanged
else:
pass
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 el elsecaso. Sin usar pass, un futuro programador podría moverse flag = 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:
if __name__ == "__main__":
pass
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:
try:
n[i] = 0
except IndexError:
pass
passque sería útil cuando desea anular un método en una subclase para no hacer nada.