2015-03-23 7 views
8

Ich versuche, den Google-Code-Stil zu verwenden, um eine Funktion zu dokumentieren, die ich dann sphinx mit der Napoleon-Erweiterung verwende, um Dokumentation für zu erstellen. Die Funktion ist insofern ungewöhnlich, als sie zwei Argumente zurückgibt. Ich glaube nicht, dass Napoleon damit klar kommt. Wenn ja, könnte mir jemand sagen, wie sie damit umgehen?Kann Sphinx Napoleon Dokument Funktion mehrere Argumente zurückgeben?

Vielleicht bekomme ich eine Nachricht, dass es nicht großartig Codierungsstil ist, mehrere Argumente zurückzugeben, aber können Sie das tun? Das erzeugte HTML behandelt diese beiden Zeilen als Teil einer Beschreibung für ein Argument. Wenn ich eine neue Zeile zwischen den Servern und der msg-Zeile anlege, hilft es, aber es dokumentiert immer noch einen arg.

Antwort

14

Python gibt nur ein einzelnes Objekt zurück. Wenn Sie rufen

serv,msg = foo(myinput) 

Dann werden Sie explizit die expression_list Tupel erweitert, die erzeugt wird, wenn die Funktion kehrt mit diesem Code

return servers,msg 

Sie docstring sollte irgendeine Sache wie diese lesen (mit dem Napoleon 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 
""" 

Oder mit dem Stil Napoleon NumPy:

Werfen Sie einen Blick auf die Python-Dokumentation für return und vielleicht expression_list

+1

Ich bin nicht sicher, ob das ist, was das OP bezieht, aber was ist, wenn Sie eine Funktion wie 'if foo: return foo else: return bar' haben? – Railslide

+0

Ja, es ist mehrdeutig. das OP sollte etwas Code veröffentlichen, um es klar zu machen – mor22

+0

Danke! Das ist, was ich suche, und es macht Sinn, es ist wahrscheinlich gut, den Rückgabetyp als Tupel zu dokumentieren, anstatt direkt in eine Beschreibung der Tupelelemente zu springen, wie ich dachte, aber ich konnte es nicht ganz verstehen zu arbeiten (Ich habe zur Zeit sehr wenig Erfahrung mit Sphinx). Die zwei Zeilen, die Server und MSG beschreiben, beginnen auf einer neu eingerückten Zeile, aber es gibt keine Analyse der Zeilen, sie werden wie ein Absatz behandelt. Kann ich sphinx/napoleon dazu bringen, die gleiche Art der Formatierung für Args-Parameter auf die Tupel-Elemente anzuwenden? – MrCartoonology

7

Google Stil nicht mehrere Rückgabewerte unterstützt. Als Workaround können Sie verwenden:

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. 

Dies führt zu einer schönen Ausgabe sogar mit Multi-Line-Beschreibung für jeden zurückgegebenen Artikel.