Comment tester qu'un paramètre passé à une fonction est bien une fonction
Bonjour,
Je crée des fonctions destinées à une calculatrice. De ce fait, je fais systématiquement des tests de validité des paramètres passés à l'entrée de chaque fonction de calcul, et je déclenche une exception quand ce n'est pas bon.
Or, je sais tester si le paramètre x n'est pas une chaîne:
Code:
1 2
| if type(x)!=str:
raise ... |
D'ailleurs, un print type("") renvoie bien <type 'str'>
Mais je n'arrive pas à tester si le paramètre f n'est pas une fonction alors que j'en attends une:
Code:
1 2 3
|
if type(f)!=builtin_function_or_method:
raise ... |
déclenche toujours l'exception, même quand f est une fonction.
Pourtant, si f est une fonction, un print type(f) renvoie <type 'builtin_function_or_method'>
Quelqu'un sait-il comment tester si un paramètre est une fonction?
Au pire, je pourrais toujours tester comme:
Code:
1 2 3
|
if type(f)!=type(len):
raise ... |
parce que ça, ça marche puisque len est une fonction. Mais j'aimerais quelque chose de plus élégant.
Tyrtamos