Czy powinienem przetestować, czy if
coś jest prawidłowe, czy po prostu try
to zrobić i wyłapać wyjątek?
- Czy istnieje solidna dokumentacja mówiąca, że jeden sposób jest preferowany?
- Czy jest jeden sposób bardziej pytoniczny ?
Na przykład, czy powinienem:
if len(my_list) >= 4:
x = my_list[3]
else:
x = 'NO_ABC'
Lub:
try:
x = my_list[3]
except IndexError:
x = 'NO_ABC'
Kilka myśli ...
PEP 20 mówi:
Błędy nigdy nie powinny przejść bezgłośnie.
Chyba że wyraźnie uciszono.
Czy użycie try
zamiast an if
powinno być interpretowane jako cichy błąd? A jeśli tak, to czy wyraźnie go uciszasz, używając go w ten sposób, dzięki czemu jest OK?
Ja nie odnosząc się do sytuacji, w których można zrobić tylko rzeczy 1 drogę; na przykład:
try:
import foo
except ImportError:
import baz
if index in mylist
testy czy indeks jest elementem mylisty, a nie możliwym indeksem. Wolałbyśif index < len(mylist)
zamiast tego.