2011-08-19 6 views
10

Esiste un'opzione per stampare l'output della guida ('myfun'). Il comportamento che sto vedendo è che l'output è stampato su std.out e lo script attende l'input dell'utente (ad esempio, digita "q" per continuare).python "help": print docstrings

Ci deve essere un'impostazione per impostare questa opzione per scaricare solo le didascalie.

In alternativa, se potessi semplicemente scaricare la doctring PLUS la "def f (args):" linea che andrebbe bene anche.

La ricerca di "python help function" è comica. :) Forse mi manca qualche bella pagina pydoc da qualche parte là fuori che spiega tutto?

risposta

13

per ottenere esattamente l'aiuto che viene stampato dal help(str) nella variabile strhelp:

import pydoc 
strhelp = pydoc.render_doc(str, "Help on %s") 

Naturalmente si può quindi facilmente stampare senza paginazione, ecc

+0

Altre risposte sono probabilmente corrette, ma questo è esattamente ciò di cui avevo bisogno. – mathtick

+0

@mathtick: Questo è ciò che io chiamo coscienzioso, accettando una risposta dopo così tanto tempo! – kindall

+0

Ha ... Immagino sia la testimonianza dell'interfaccia StackOverflow che mi aiuta con la mia vita lavorativa sparsa! Stavo esaminando il mio profilo, in realtà ho prestato attenzione alla mia lista di domande e ne ho notato alcune che avevo dimenticato di accettare. – mathtick

1
>>> x = 2 
>>> x.__doc__ 
'int(x[, base]) -> integer\n\nConvert a string or number to an integer, if possi 
ble. A floating point\nargument will be truncated towards zero (this does not i 
nclude a string\nrepresentation of a floating point number!) When converting a 
string, use\nthe optional base. It is an error to supply a base when converting 
a\nnon-string. If the argument is outside the integer range a long object\nwill 
be returned instead.' 

È quello che ti serviva?

modifica - è possibile print(x.__doc__) e per quanto riguarda la firma della funzione, è possibile creare utilizzando il modulo inspect.

>>> inspect.formatargspec(inspect.getargspec(os.path.join)) 
'((a,), p, None, None)' 
>>> help(os.path.join) 
Help on function join in module ntpath: 

join(a, *p) 
    Join two or more pathname components, inserting "\" as needed 
3

Proprio

print obj.__doc__ 

o

myvar = obj.__doc__ 

La funzione di aiuto esiste per visualizzare la guida in modo interattivo, può essere recuperato abbastanza facilmente senza di essa.

+0

Per qualche motivo che ancora ignoro, questo è generalmente diverso dal risultato di 'pydoc.render_doc (obj)' -ho indovinato in particolare nel caso di una funzione definita all'interno di un'altra funzione, che imposta la sua docstring impostando 'func .__ doc__ = ...'. – EOL

2

Avete già visto riferimento alla docstring, la magia __doc__ variabile che contiene il corpo della guida:

def foo(a,b,c): 
    ''' DOES NOTHING!!!! ''' 
    pass 

print foo.__doc__ # DOES NOTHING!!!! 

per ottenere il nome di una funzione, è sufficiente utilizzare __name__:

def foo(a,b,c): pass 

print foo.__name__ # foo 

il modo per ottenere la firma di una funzione che non è costruito in è possibile utilizzare la proprietà func_code e da che si può leggere i suoi co_varnames:

def foo(a,b,c): pass 
print foo.func_code.co_varnames # ('a', 'b', 'c') 

Non ho trovato il modo di fare lo stesso per le funzioni incorporate.