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:
D'ailleurs, un print type("") renvoie bien <type 'str'>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 if type(x)!=str: raise ...
Mais je n'arrive pas à tester si le paramètre f n'est pas une fonction alors que j'en attends une:
déclenche toujours l'exception, même quand f est une fonction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if type(f)!=builtin_function_or_method: raise ...
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:
parce que ça, ça marche puisque len est une fonction. Mais j'aimerais quelque chose de plus élégant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if type(f)!=type(len): raise ...
Tyrtamos
Partager