Dois-je tester que if
quelque chose est valide ou simplement try
le faire et attraper l'exception?
- Existe-t-il une documentation solide indiquant qu'une solution est préférable?
- Est-ce qu'une manière est plus pythonique ?
Par exemple, devrais-je:
if len(my_list) >= 4:
x = my_list[3]
else:
x = 'NO_ABC'
Ou:
try:
x = my_list[3]
except IndexError:
x = 'NO_ABC'
Quelques réflexions ...
PEP 20 dit:
Les erreurs ne devraient jamais passer silencieusement.
À moins d'être explicitement réduit au silence.
L'utilisation de a try
au lieu de an doit-elle if
être interprétée comme une erreur passant silencieusement? Et si tel est le cas, est-ce que vous le faites taire explicitement en l'utilisant de cette manière, pour que cela fonctionne?
Je ne parle pas de situations où vous ne pouvez faire les choses que d'une seule manière; par exemple:
try:
import foo
except ImportError:
import baz
if index in mylist
teste si l'index est un élément de mylist, pas un index possible. Vous voudriezif index < len(mylist)
plutôt.