Usando tente vs se em python

Existe uma razão para decidir qual dastry ouif constrói para usar, ao testar variável para ter um valor?

Por exemplo, existe uma função que retorna uma lista ou não retorna um valor. Eu quero verificar o resultado antes de processá-lo. Qual dos seguintes seria mais preferível e por quê?

result = function();
if (result):
    for r in result:
        #process items

ou

result = function();
try:
    for r in result:
        #process items
except TypeError:
    pass;
Discussão relacionada:

Verificando a existência de membros em Python

questionAnswers(9)

yourAnswerToTheQuestion