Должен ли я тестировать if
что-то действительно или просто try
сделать это и поймать исключение?
- Есть ли твердая документация, говорящая о том, что один из способов является предпочтительным?
- Один из способов более питонический?
Например, если я:
if len(my_list) >= 4:
x = my_list[3]
else:
x = 'NO_ABC'
Или:
try:
x = my_list[3]
except IndexError:
x = 'NO_ABC'
Некоторые мысли...
PEP 20 говорит:
Ошибки никогда не должны проходить молча.
Если явно не отключено.
Должно ли использование try
вместо if
интерпретироваться как ошибка, проходящая молча? И если это так, вы явно замалчиваете его, используя его таким образом, поэтому делаете это нормально?
Я не, ссылаясь на ситуации, когда вы можете делать только один способ; например:
try:
import foo
except ImportError:
import baz