Dois-je tester que ifquelque chose est valide ou simplement tryle 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 tryau 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 mylistteste si l'index est un élément de mylist, pas un index possible. Vous voudriezif index < len(mylist)plutôt.