Devo testare if
qualcosa di valido o semplicemente try
farlo e catturare l'eccezione?
- Esiste una solida documentazione che dice che è preferibile un modo?
- È un modo più pitonico ?
Ad esempio, dovrei:
if len(my_list) >= 4:
x = my_list[3]
else:
x = 'NO_ABC'
O:
try:
x = my_list[3]
except IndexError:
x = 'NO_ABC'
Alcuni pensieri ...
PEP 20 dice:
Gli errori non dovrebbero mai passare silenziosamente.
A meno che non sia esplicitamente messo a tacere.
L'uso di a try
invece di an if
dovrebbe essere interpretato come un errore che passa silenziosamente? E se è così, lo stai esplicitamente mettendo a tacere usandolo in questo modo, quindi rendendolo OK?
Non mi riferisco a situazioni in cui puoi fare le cose solo 1 modo; per esempio:
try:
import foo
except ImportError:
import baz
if index in mylist
verifica se l'indice è un elemento della mia lista, non un possibile indice. Vorrestiif index < len(mylist)
invece.