Além de seu uso como espaço reservado para funções não implementadas, passpode ser útil no preenchimento de uma declaração if-else ("Explícito é melhor 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
Obviamente, nesse caso, provavelmente seria usado em returnvez de atribuição, mas nos casos em que a mutação é desejada, isso funciona melhor.
O uso passaqui é especialmente útil para avisar futuros mantenedores (inclusive você!) Para não colocar etapas redundantes fora das instruções condicionais. No exemplo acima, flagé definido nos dois casos mencionados especificamente, mas não na elsecaixa. Sem usar pass, um programador futuro pode passar flag = Truepara fora da condição - configurando assim flagem todos os casos.
Outro caso é com a função clichê, geralmente vista na parte inferior de um arquivo:
if __name__ == "__main__":
pass
Em alguns arquivos, pode ser bom deixar isso passpara permitir uma edição mais fácil mais tarde e deixar explícito que nada deve acontecer quando o arquivo for executado por si próprio.
Por fim, como mencionado em outras respostas, pode ser útil não fazer nada quando uma exceção é capturada:
try:
n[i] = 0
except IndexError:
pass
passseria útil quando você deseja substituir um método em uma subclasse para não fazer nada.