Wie erstelle ich mehrzeilige Kommentare in Python?

Lesezeit: 7 Minuten

Benutzer-Avatar
Dungeon-Jäger

Wie mache ich mehrzeilige Kommentare? Die meisten Sprachen haben Blockkommentarsymbole wie:

/*

*/

  • Ich nehme an, da es sich um eine interpretierte Sprache handelt, ist es sinnvoll, wie im Fall von sh oder bash oder zsh, dass # ist die einzige Möglichkeit, Kommentare abzugeben. Ich vermute, dass es einfacher ist, Python-Skripte auf diese Weise zu interpretieren.

    – Victor Zamanian

    14. März 2017 um 16:29 Uhr

  • Ich weiß, dass diese Antwort alt ist, aber ich bin darauf gestoßen, weil ich dieselbe Frage hatte. Die akzeptierte Antwort funktioniert, obwohl ich nicht genug über Python weiß, um die Feinheiten zu kennen, warum sie möglicherweise nicht korrekt ist (gemäß ADTC).

    – Brandon Barney

    7. Juli 2017 um 12:55 Uhr

  • @BrandonBarney Lassen Sie mich Ihnen das Problem erklären. Die akzeptierte Antwort, die ”’ verwendet, erstellt tatsächlich eine mehrzeilige Zeichenfolge, die nichts tut. Technisch gesehen ist das kein Kommentar. Sie können zum Beispiel k = ”’gefälschter Kommentar, echter String”’ schreiben. Dann print(k), um zu sehen, was ADTC bedeutet.

    – Pinyotae

    6. August 2017 um 3:13 Uhr

  • Das macht jetzt viel mehr Sinn. Ich bin an vba gewöhnt, wo das Erstellen einer nicht verwendeten Zeichenfolge zu einem Fehler führt. Ich wusste nicht, dass Python es einfach ignoriert. Es funktioniert immer noch zumindest zum Debuggen und Lernen, ist aber keine gute Praxis für die eigentliche Entwicklung.

    – Brandon Barney

    6. August 2017 um 21:20 Uhr

  • Wenn Sie im Python-Quellcode eine lange Zeile umbrechen, rückt der Editor sie automatisch ein, um zu zeigen, dass die unterbrochene Zeile wirklich Teil der vorherigen Zeile ist? Soll ich das tun, wenn ich eine lange Pseudocode-Zeile unterbreche?

    – alpha_989

    31. Januar 2018 um 18:41 Uhr

Aus der akzeptierten Antwort …

Sie können Zeichenfolgen in dreifachen Anführungszeichen verwenden. Wenn sie kein Docstring sind (zuerst in einer Klasse/Funktion/Modul), werden sie ignoriert.

Das stimmt einfach nicht. Im Gegensatz zu Kommentaren werden Zeichenfolgen in dreifachen Anführungszeichen immer noch analysiert und müssen syntaktisch gültig sein, unabhängig davon, wo sie im Quellcode erscheinen.

Wenn Sie versuchen, diesen Code auszuführen …

def parse_token(token):
    """
    This function parses a token.
    TODO: write a decent docstring :-)
    """

    if token == '\\and':
        do_something()

    elif token == '\\or':
        do_something_else()

    elif token == '\\xor':
        '''
        Note that we still need to provide support for the deprecated
        token \xor. Hopefully we can drop support in libfoo 2.0.
        '''
        do_a_different_thing()

    else:
        raise ValueError

Du bekommst entweder…

ValueError: invalid \x escape

…auf Python 2.x oder…

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 79-80: truncated \xXX escape

…auf Python 3.x.

Die einzige Möglichkeit, mehrzeilige Kommentare zu erstellen, die vom Parser ignoriert werden, ist …

elif token == '\\xor':
    # Note that we still need to provide support for the deprecated
    # token \xor. Hopefully we can drop support in libfoo 2.0.
    do_a_different_thing()

  • Dann können Sie verwenden r'raw string'r'\xor' == '\\xor'.

    – IngwerPlusPlus

    29. Juni 2016 um 14:13 Uhr


  • Nun, jeder “echte” mehrzeilige Kommentar muss auch geparst und syntaktisch gültig sein. Kommentare im C-Stil dürfen kein a enthalten */ da es zum Beispiel den Block beendet.

    Benutzer1919238

    27. Juli 2016 um 9:31 Uhr

  • @ dan1111 Das ist offensichtlich, dass der Kommentar keine Endmarkierung enthalten kann, aber das ist die einzige Einschränkung.

    – el.pescado – нет войне

    29. September 2016 um 5:50 Uhr

  • ''' “Kommentare” haben mehr Einschränkungen. Sie können nur ganze Anweisungen auskommentieren, während Kommentare Teile des Ausdrucks auskommentieren können. Beispiel: In C können Sie einige Listenelemente auskommentieren: int a[] = {1, 2, /* 3, 4, */ 5};. Mit mehrzeiliger Zeichenfolge können Sie dies nicht tun, da dies eine Zeichenfolge in Ihre Liste einfügen würde.

    – el.pescado – нет войне

    29. September 2016 um 5:55 Uhr

Benutzer-Avatar
unutbu

Python hat eine mehrzeilige String-/Kommentar-Syntax in dem Sinne, dass, wenn es nicht als Docstrings verwendet wird, mehrzeilige Zeichenfolgen keinen Bytecode generieren — so wie #-vorangestellte Kommentare. Tatsächlich verhält es sich genau wie ein Kommentar.

Wenn Sie andererseits sagen, dass dieses Verhalten in der offiziellen Dokumentation dokumentiert werden muss, um eine echte Kommentarsyntax zu sein, dann würden Sie zu Recht sagen, dass es nicht als Teil der Sprachspezifikation garantiert wird.

In jedem Fall sollte Ihr Texteditor auch in der Lage sein, einen ausgewählten Bereich einfach auszukommentieren (indem Sie eine # vor jeder Zeile einzeln). Wenn nicht, wechseln Sie zu einem Texteditor, der dies tut.

Das Programmieren in Python ohne bestimmte Textbearbeitungsfunktionen kann eine schmerzhafte Erfahrung sein. Den richtigen Editor zu finden (und zu wissen, wie man ihn benutzt) kann einen großen Unterschied in der Wahrnehmung der Python-Programmiererfahrung ausmachen.

Der Texteditor sollte nicht nur ausgewählte Bereiche auskommentieren können, sondern auch Codeblöcke einfach nach links und rechts verschieben können und den Cursor beim Drücken automatisch auf die aktuelle Einrückungsebene setzen Eingeben. Code-Folding kann auch nützlich sein.


Zum Schutz vor Linkzerfall hier der Inhalt von Guido van Rossums Tweet:

@BSUCSClub Python-Tipp: Sie können mehrzeilige Zeichenfolgen als mehrzeilige Kommentare verwenden. Sofern sie nicht als Docstrings verwendet werden, generieren sie keinen Code! 🙂

  • Zeichenfolge in dreifachen Anführungszeichen (”’) funktioniert tatsächlich, um mehrzeilige Kommentare zu erfüllen.

    – Varun Bhatia

    24. Juni 2013 um 6:53 Uhr


  • Danke.. Verwendet (”’) und (“””), um den Block auszukommentieren, aber es hat mir bei Django-Anwendungen nicht geholfen LEERLAUF und es gibt Optionen wie Region auskommentieren und Regionen auskommentieren (Kürzel: Alt+3 bzw. Alt+4) unter Format Speisekarte. Jetzt ist es einfacher denn je..

    – Saurav Kumar

    11. Dezember 2013 um 6:53 Uhr


  • Sie sollten auch die Verwendung einer IDE in Betracht ziehen. Ja, sie sind kräftig, aber wenn sie richtig verwendet werden, können sie die Codierungszeit wirklich verlängern. Ich persönlich habe früher PyDev verwendet und verwende jetzt PTVS (mit Visual Studio). Ich würde PTVS auf jeden Fall empfehlen, da es wirklich schön ist, damit zu arbeiten, da es die oben genannten Funktionen zusammen mit viel mehr enthält – direkte Integration mit virtualenvs und wirklich gutes Debugging, um es gelinde auszudrücken

    – Spinne

    11. April 2014 um 2:42 Uhr

  • @HappyLeapSecond Ich denke, Sie sollten es klarstellen und sagen: “Python hat keine wahr mehrzeilige Kommentarsyntax, unterstützt jedoch mehrzeilige Zeichenfolgen, die als Kommentare verwendet werden können.”

    – ADTC

    18. Juli 2015 um 10:31 Uhr

  • Was ich möchte, ist eine einfache Möglichkeit, ganze Codeblöcke beim Testen auszukommentieren. Andere Sprachen machen das einfach. Python ist nur ein Schmerz.

    – Albert Godfried

    26. Februar 2016 um 17:01 Uhr

Benutzer-Avatar
Peter Mortensen

Es gibt keine Funktion wie einen mehrzeiligen Kommentar. # ist die einzige Möglichkeit, eine einzelne Codezeile zu kommentieren. Viele von euch antworteten ”’ einen Kommentar ”’ dies als ihre Lösung.

Es scheint zu funktionieren, aber intern ''' in Python werden die eingeschlossenen Zeilen als reguläre Zeichenfolgen verwendet, die der Interpreter nicht wie die Verwendung von Kommentaren ignoriert #.

Überprüfen Sie die offizielle Dokumentation hier

  • Zeichenfolge in dreifachen Anführungszeichen (”’) funktioniert tatsächlich, um mehrzeilige Kommentare zu erfüllen.

    – Varun Bhatia

    24. Juni 2013 um 6:53 Uhr


  • Danke.. Verwendet (”’) und (“””), um den Block auszukommentieren, aber es hat mir bei Django-Anwendungen nicht geholfen LEERLAUF und es gibt Optionen wie Region auskommentieren und Regionen auskommentieren (Kürzel: Alt+3 bzw. Alt+4) unter Format Speisekarte. Jetzt ist es einfacher denn je..

    – Saurav Kumar

    11. Dezember 2013 um 6:53 Uhr


  • Sie sollten auch die Verwendung einer IDE in Betracht ziehen. Ja, sie sind kräftig, aber wenn sie richtig verwendet werden, können sie die Codierungszeit wirklich verlängern. Ich persönlich habe früher PyDev verwendet und verwende jetzt PTVS (mit Visual Studio). Ich würde PTVS auf jeden Fall empfehlen, da es wirklich schön ist, damit zu arbeiten, da es die oben genannten Funktionen zusammen mit viel mehr enthält – direkte Integration mit virtualenvs und wirklich gutes Debugging, um es gelinde auszudrücken

    – Spinne

    11. April 2014 um 2:42 Uhr

  • @HappyLeapSecond Ich denke, Sie sollten es klarstellen und sagen: “Python hat keine wahr mehrzeilige Kommentarsyntax, unterstützt jedoch mehrzeilige Zeichenfolgen, die als Kommentare verwendet werden können.”

    – ADTC

    18. Juli 2015 um 10:31 Uhr

  • Was ich möchte, ist eine einfache Möglichkeit, ganze Codeblöcke beim Testen auszukommentieren. Andere Sprachen machen das einfach. Python ist nur ein Schmerz.

    – Albert Godfried

    26. Februar 2016 um 17:01 Uhr

Visual Studio-Code universeller offizieller mehrzeiliger Kommentarumschalter. Ähnlich wie die Xcode-Verknüpfung.

macOS: Codeblock auswählen und dann +/

Windows: Wählen Sie Code-Block und dann Strg+/

1006720cookie-checkWie erstelle ich mehrzeilige Kommentare in Python?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy