Was ist der richtige Weg, um Funktionen in Python zu kommentieren?


174

Gibt es eine allgemein akzeptierte Möglichkeit, Funktionen in Python zu kommentieren? Ist folgendes akzeptabel?

#########################################################
# Create a new user
#########################################################
def add(self):

Antworten:


318

Der richtige Weg, dies zu tun, besteht darin, eine Dokumentzeichenfolge bereitzustellen. Auf diese Weise help(add)wird auch Ihr Kommentar ausgespuckt.

def add(self):
    """Create a new user.
    Line 2 of comment...
    And so on... 
    """

Das sind drei doppelte Anführungszeichen, um den Kommentar zu öffnen, und drei weitere doppelte Anführungszeichen, um ihn zu beenden. Sie können auch eine beliebige gültige Python-Zeichenfolge verwenden. Es muss nicht mehrzeilig sein und doppelte Anführungszeichen können durch einfache Anführungszeichen ersetzt werden.

Siehe: PEP 257


10
Beachten Sie, dass es nicht in dreifachen Anführungszeichen stehen muss. Jedes String-Literal funktioniert. Sie können jedoch weitere Informationen in eine mehrzeilige Zeichenfolge einfügen.
Ignacio Vazquez-Abrams

5
Obwohl die Konvention vorschreibt, dass es dreifach zitiert werden sollte. Ich habe noch nie einen Docstring gesehen, der es nicht war.
Chinmay Kanchi

2
Das heißt nicht, dass ich nicht einverstanden bin. Sie sollten dreifach zitiert werden, aber Sie werden einige in freier Wildbahn sehen, die es nicht sind.
JCDyer

7
Sie können auch drei einfache Anführungszeichen (anstelle von drei doppelten Anführungszeichen) verwenden, um die Dokumentzeichenfolge zu öffnen und zu schließen.
Craig McQueen

sollten Sie den Kommentar nicht auch einrücken?
Joctee

25

Verwenden Sie eine Dokumentzeichenfolge, wie andere bereits geschrieben haben.

Sie können sogar noch einen Schritt weiter gehen und Ihrem Docstring einen Doctest hinzufügen, sodass das automatisierte Testen Ihrer Funktionen zum Kinderspiel wird.


3
Diese Antwort ist ziemlich schwach, ohne auf die verlinkte Seite zu folgen.
Xaxxon

18

Verwenden Sie eine Dokumentzeichenfolge :

Ein Zeichenfolgenliteral, das als erste Anweisung in einer Modul-, Funktions-, Klassen- oder Methodendefinition vorkommt. Eine solche Dokumentzeichenfolge wird zum __doc__besonderen Attribut dieses Objekts.

Alle Module sollten normalerweise Docstrings haben, und alle Funktionen und Klassen, die von einem Modul exportiert werden, sollten auch Docstrings haben. Öffentliche Methoden (einschließlich des __init__Konstruktors) sollten ebenfalls Dokumentzeichenfolgen enthalten. Ein Paket kann in der Modul-Dokumentzeichenfolge der __init__.pyDatei im Paketverzeichnis dokumentiert sein .

String-Literale, die an anderer Stelle im Python-Code vorkommen, können auch als Dokumentation dienen. Sie werden vom Python-Bytecode-Compiler nicht erkannt und sind nicht als Laufzeitobjektattribute zugänglich (dh nicht zugewiesen __doc__). Zwei Arten von zusätzlichen Dokumentzeichenfolgen können jedoch von Softwaretools extrahiert werden:

  1. Zeichenfolgenliterale, die unmittelbar nach einer einfachen Zuweisung auf der obersten Ebene eines Moduls, einer Klasse oder einer __init__Methode auftreten, werden als "Attribut-Dokumentzeichenfolgen" bezeichnet.
  2. Zeichenfolgenliterale, die unmittelbar nach einer anderen Dokumentzeichenfolge auftreten, werden als "zusätzliche Dokumentzeichenfolgen" bezeichnet.

In PEP 258 , "Docutils Design Specification" [2] , finden Sie eine detaillierte Beschreibung der Attribute und zusätzlicher Dokumentzeichenfolgen ...


10

Die Prinzipien des guten Kommentierens sind ziemlich subjektiv, aber hier sind einige Richtlinien:

  • Funktionskommentare sollten die Absicht einer Funktion beschreiben, nicht die Implementierung
  • Skizzieren Sie alle Annahmen, die Ihre Funktion in Bezug auf den Systemstatus macht. Wenn globale Variablen (tsk, tsk) verwendet werden, listen Sie diese auf.
  • Achten Sie auf übermäßige ASCII-Grafik . Lange Hashes scheinen die Kommentare leichter lesbar zu machen, aber es kann ärgerlich sein, mit ihnen umzugehen, wenn sich Kommentare ändern
  • Nutzen Sie Sprachfunktionen, die eine automatische Dokumentation bieten, z. B. Dokumentzeichenfolgen in Python, POD in Perl und Javadoc in Java

7
Daran ist nichts Subjektives. Python ist sehr klar in Bezug auf die Verwendung von Docstring-Kommentaren.

@fuzzy lollipop, ich schätze den Kommentar, aber Sie werden feststellen, dass mein letzter Punkt genau diesen Punkt macht. Vielleicht geht es bei der Frage des OP nur um die Mechanik des Kommentierens in Python, aber ich glaube nicht, dass meine Antwort eine
Abwertung rechtfertigt

7

Lesen Sie mehr über die Verwendung von Docstrings in Ihrem Python-Code.

Gemäß den Python- Docstring-Konventionen :

Die Dokumentzeichenfolge für eine Funktion oder Methode sollte ihr Verhalten zusammenfassen und ihre Argumente, Rückgabewerte, Nebenwirkungen, ausgelösten Ausnahmen und Einschränkungen hinsichtlich des Aufrufs dokumentieren (alle, falls zutreffend). Optionale Argumente sollten angegeben werden. Es sollte dokumentiert werden, ob Schlüsselwortargumente Teil der Schnittstelle sind.

Es wird keine goldene Regel geben, sondern Kommentare abgeben, die den anderen Entwicklern in Ihrem Team (falls Sie eine haben) oder sogar sich selbst etwas bedeuten, wenn Sie sechs Monate später darauf zurückkommen.


5

Ich würde mich für eine Dokumentationspraxis entscheiden, die in ein Dokumentationswerkzeug wie Sphinx integriert ist .

Der erste Schritt ist die Verwendung von docstring:

def add(self):
 """ Method which adds stuff
 """

2

Ich würde noch einen Schritt weiter gehen, als nur "benutze einen Docstring" zu sagen. Wählen Sie ein Dokumentationsgenerierungswerkzeug wie pydoc oder epydoc (ich verwende epydoc beim Pyparsing) und verwenden Sie die von diesem Werkzeug erkannte Markup-Syntax. Führen Sie dieses Tool während der Entwicklung häufig aus, um Lücken in Ihrer Dokumentation zu identifizieren. In der Tat können Sie sogar davon profitieren, die Dokumentzeichenfolgen für die Mitglieder einer Klasse zu schreiben, bevor Sie die Klasse implementieren.



0

Obwohl ich damit einverstanden bin, dass dies kein Kommentar sein sollte, sondern ein Dokumentstring, wie die meisten (alle?) Antworten vermuten lassen, möchte ich numpydoc (einen Docstring-Styleguide) hinzufügen .

Wenn Sie dies so tun, können Sie (1) automatisch Dokumentation erstellen und (2) Personen erkennen dies und haben es leichter, Ihren Code zu lesen.


0

Sie können dazu drei Anführungszeichen verwenden.

Sie können einfache Anführungszeichen verwenden:

def myfunction(para1,para2):
  '''
  The stuff inside the function
  '''

Oder doppelte Anführungszeichen:

def myfunction(para1,para2):
  """
  The stuff inside the function
  """
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.