2010-12-12 25 views
10

Existe-t-il un moyen d'introspecter une fonction pour qu'elle me montre des informations sur les arguments qu'elle prend (comme nombre d'arguments, type si possible, nom des arguments si nommé) et la valeur de retour? dir() ne semble pas faire ce que je veux. La chaîne __doc__ inclut parfois des arguments méthode/fonction, mais souvent non.Comment voir la signature de la fonction en Python?

+0

En général, la documentation (pas nécessairement '__doc__') * est * votre meilleur pari. – delnan

+1

Pour voir la signature de la fonction. Étape 1. Lisez le code. Étape 2. Recherche. http://stackoverflow.com/questions/2677185/how-read-method-signature Ceci est déjà répondu ici plusieurs fois. http://stackoverflow.com/questions/3375573/finding-a-functions-parameters-in-python, aussi. –

+1

Appréciez les liens, mais honnêtement, je pense que ma question est * beaucoup * plus succinctement et clairement énoncée que ceux que vous avez transmis. Cela est au moins confirmé par le fait que j'ai fait une recherche et que cela n'a rien révélé après quelques minutes de recherche. : \ – mindthief

Répondre

15

help(the_funcion) devrait vous donner toutes ces informations.

Exemple:

>>> help(enumerate) 
Help on class enumerate in module __builtin__: 

class enumerate(object) 
| enumerate(iterable[, start]) -> iterator for index, value of iterable 
| 
| Return an enumerate object. iterable must be another object that supports 
| iteration. The enumerate object yields pairs containing a count (from 
| start, which defaults to zero) and a value yielded by the iterable argument 
| enumerate is useful for obtaining an indexed list: 
|  (0, seq[0]), (1, seq[1]), (2, seq[2]), ... 
| 
| Methods defined here: 
| 
| __getattribute__(...) 
|  x.__getattribute__('name') <==> x.name 
| 
| __iter__(...) 
|  x.__iter__() <==> iter(x) 
| 
| next(...) 
|  x.next() -> the next value, or raise StopIteration 
| 
| ---------------------------------------------------------------------- 
| Data and other attributes defined here: 
| 
| __new__ = <built-in method __new__ of type object> 
|  T.__new__(S, ...) -> a new object with type S, a subtype of T 
+4

A travaillé comme un charme, merci! Cette autre solution d'une question connexe fonctionne également: 'import inspecter imprimer (inspect.getargspec (the_function))' mais help() est beaucoup mieux! – mindthief

+0

Je travaille avec python depuis plus de 5 ans maintenant et je ne connaissais pas celui-là. Fantastique! –