2010-12-12 16 views
10

C'è un modo per analizzare una funzione in modo che mi mostri informazioni sugli argomenti necessari (come numero di argomenti, tipo se possibile, nome degli argomenti se nominati) e il valore restituito? dir() non sembra fare quello che voglio. La stringa __doc__ a volte include argomenti metodo/funzione, ma spesso non lo fa.Come vedere la firma della funzione in Python?

+0

In generale, la documentazione (non necessariamente '__doc__') * è * la soluzione migliore. – delnan

+1

Per vedere la firma della funzione. Passaggio 1. Leggere il codice. Passaggio 2. Cerca. http://stackoverflow.com/questions/2677185/how-read-method-signature Questo è già stato risposto qui più volte. http://stackoverflow.com/questions/3375573/finding-a-functions-parameters-in-python, anche. –

+1

Apprezzo i link, ma onestamente penso che la mia domanda sia * molto * più succinta e chiara di quelle che hai inoltrato. Questo è almeno confermato dal fatto che ho fatto una ricerca e non è spuntato nulla dopo alcuni minuti di ricerca. : \ – mindthief

risposta

15

help(the_funcion) dovrebbe fornire tutte queste informazioni.

Esempio:

>>> 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

Ha funzionato come un fascino, grazie! Anche questa altra soluzione da una domanda correlata funziona: 'import inspect print (inspect.getargspec (the_function))' ma help() è molto meglio! – mindthief

+0

Ho lavorato con Python per oltre 5 anni e non ne sapevo nulla. Fantastico! –

Problemi correlati