Por que os objetos de função são avaliados como True em python?

Em python é válido fazer uma construção como:

def a(): 
    return 0

if a: 
    print "Function object was considered True"
else:  
    print "Function object was considered False"

Gostaria de perguntar qual é a lógica que um ponteiro de função é avaliado como True.

Por que esse tipo de construção foi inserido na linguagem?

questionAnswers(3)

yourAnswerToTheQuestion