2015-03-23 4 views
8

Sto cercando di utilizzare lo stile del codice Google per documentare una funzione che uso quindi con sfinge l'estensione napoleon per creare la documentazione. La funzione è inusuale in quanto restituisce due argomenti. Non penso che Napoleone maneggi questo. Se è così, qualcuno potrebbe dirmi come lo gestiscono?Può la funzione di documento napoleone sfinge che restituisce più argomenti?

def foo(a): 
'''one line summary 

longer explanation 

Args: 
    a (int): parameter description 

Returns: 
    servers (list): list of servers to use 
    msg (str): logging message string 
''' 
pass 

Forse sto ricevendo un messaggio che non è un ottimo stile di codifica per restituire più argomenti, ma puoi farlo? L'html generato tratta queste due righe come parte di una descrizione per un argomento. Se metto una newline tra i server e la linea di msg, aiuta, ma sta ancora documentando un argomento.

risposta

14

Python restituisce solo un singolo oggetto. Se si chiama

serv,msg = foo(myinput) 

Poi si stanno espandendo in modo esplicito la tupla expression_list che si genera quando la funzione ritorna con questo codice

return servers,msg 

È docstring dovrebbe leggere qualcosa come questo (con l'Napoleone Google Style)

""" 
one line summary 

longer explanation 

Args: 
    a (int): parameter description 

Returns: 
    (tuple): tuple containing: 

     servers(list) servers to use 
     msg (str): logging message string 
""" 

O con lo stile Napoleone NumPy:

""" 
one line summary 

longer explanation 

Parameters 
---------- 
a : int 
    parameter description 

Returns 
------- 
servers : list 
    servers to use 
msg : str 
    logging message string 
""" 

Dai un'occhiata alla la documentazione Python per return e forse expression_list

+1

Non sono sicuro se questo è ciò a cui si riferisce l'OP, ma cosa succede se si ha una funzione come "se pippo: return foo else: return bar'? – Railslide

+0

sì è ambiguo. l'OP dovrebbe pubblicare del codice per chiarire – mor22

+0

Grazie! Questo è quello che sto cercando, e ha senso, probabilmente è buono documentare il tipo di ritorno come tupla piuttosto che saltare direttamente in una descrizione degli elementi di tuple come pensavo di poter fare, ma non riuscivo a capirlo al lavoro (ho pochissima esperienza con la sfinge al momento). Le due righe che descrivono server e msg iniziano su una riga appena rientrata, ma non c'è parsing delle righe, sono trattate come un paragrafo. Posso ottenere sfinge/napoleon per introdurre lo stesso tipo di formattazione che si applica ai parametri Args agli elementi tuple? – MrCartoonology

7

stile Google non supporta più i valori di ritorno. Come soluzione temporanea, è possibile utilizzare:

Returns: 
     2-element tuple containing 

     - **rates** (*array*): the unnormalized rates (just the sum of the 
      exponential kernels). To obtain rates in Hz divide the 
      array by `2*tau` (or other conventional `x*tau` duration). 
     - **nph** (*array*): number of photons in -5*tau..5*tau window 
      for each timestamp. Proportional to the rate computed 
      with KDE and rectangular kernel. 

Ciò risulta in una buona resa anche con la descrizione di più righe per ogni articolo restituito.

Problemi correlati