Outre son utilisation comme espace réservé pour les fonctions non implémentées, pass
peut être utile pour remplir une instruction if-else ("Explicit vaut mieux qu'implicite.")
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
Bien sûr, dans ce cas, on utiliserait probablement return
au lieu d'une affectation, mais dans les cas où une mutation est souhaitée, cela fonctionne mieux.
L'utilisation de pass
ici est particulièrement utile pour avertir les futurs responsables (y compris vous-même!) De ne pas mettre des étapes redondantes en dehors des instructions conditionnelles. Dans l'exemple ci-dessus, flag
est défini dans les deux cas spécifiquement mentionnés, mais pas dans le cas else
. Sans utilisation pass
, un futur programmeur pourrait se déplacer flag = True
en dehors de la condition, ce qui se produira flag
dans tous les cas.
Un autre cas est avec la fonction passe-partout souvent vue au bas d'un fichier:
if __name__ == "__main__":
pass
Dans certains fichiers, il peut être judicieux de laisser cela pass
pour permettre une édition plus facile plus tard, et pour rendre explicite que rien ne devrait se produire lorsque le fichier est exécuté seul.
Enfin, comme mentionné dans d'autres réponses, il peut être utile de ne rien faire lorsqu'une exception est interceptée:
try:
n[i] = 0
except IndexError:
pass
pass
serait utile lorsque vous souhaitez remplacer une méthode dans une sous-classe pour ne rien faire.