Além de seu uso como espaço reservado para funções não implementadas, pass
pode 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 return
vez de atribuição, mas nos casos em que a mutação é desejada, isso funciona melhor.
O uso pass
aqui é 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 else
caixa. Sem usar pass
, um programador futuro pode passar flag = True
para fora da condição - configurando assim flag
em 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 pass
para 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
pass
seria útil quando você deseja substituir um método em uma subclasse para não fazer nada.