Est-il possible de déclarer une fonction en Python?

Est-il possible de déclarer une fonction en Python? Je veux trier une liste en utilisant ma propre cmp fonction avant qu'il ne soit déclaré.

print "\n".join([str(bla) for bla in sorted(mylist, cmp = cmp_configs)])

J'ai organisé mon code pour mettre la définition de cmp_configs méthode après l'invocation. Il échoue avec ce message d'erreur:

NameError: name 'cmp_configs' is not defined

Est-il un moyen de "déclarer" cmp_configs méthode avant qu'il est utilisé? Il serait de rendre mon code plus propre?

Je suppose que certaines personnes seront tentés de me dire que je devrais simplement réorganiser mon code pour que je n'ai pas ce problème. Cependant, il ya des cas où c'est probablement inévitable, par exemple lors de la mise en œuvre de certaines formes de la récursivité. Si vous n'aimez pas cet exemple, supposons que j'ai un cas dans lequel il est vraiment nécessaires pour déclarer une fonction.

Voici un cas où l'avant-déclaration d'une fonction serait nécessaire en Python:

def spam():
    if end_condition():
        return end_result()
    else:
        return eggs()

def eggs():
    if end_condition():
        return end_result()
    else:
        return spam()

end_condition et end_result ont été définis précédemment.

Est la seule solution pour réorganiser le code et toujours mettre définitions avant d'invocations?