Frage So erstellen Sie mehrzeilige Kommentare in Python?


Ich habe kürzlich angefangen zu studieren Python, aber ich konnte nicht herausfinden, wie man mehrzeilige Kommentare implementiert. Die meisten Sprachen haben Blockkommentarsymbole wie

/* 

*/

Ich habe das in Python versucht, aber es wirft einen Fehler auf, also ist das wahrscheinlich nicht der richtige Weg. Hat Python tatsächlich eine mehrzeilige Kommentarfunktion?


828
2017-10-08 12:51


Ursprung


Antworten:


Sie können Strings in dreifacher Anführungszeichen verwenden. Wenn sie kein Docstring sind (erstes Ding in einer Klasse / Funktion / Modul), werden sie ignoriert.

'''
This is a multiline
comment.
'''

(Stellen Sie sicher, dass Sie den Zeilenabstand einrücken ''' angemessen zu vermeiden IndentationError.)

Guido van Rossum (Schöpfer von Python) getwittert das als "Profi-Tipp".

Pythons Styleguide, PEP8, Bevorzugungen durch aufeinanderfolgende einzeilige Kommentareund das finden Sie auch in vielen Projekten. Redakteure haben normalerweise eine Verknüpfung, um dies einfach zu tun.


1336
2017-10-08 12:58



Python hat ein mehrzeilige Zeichenfolge / Kommentar-Syntax in dem Sinne, dass wenn nicht als Docstrings verwendet, mehrzeilige Strings erzeuge keinen Bytecode -- so wie #-vorgegebene Kommentare. In der Tat handelt es sich genau wie ein Kommentar.

Auf der anderen Seite, wenn Sie sagen, dass dieses Verhalten im offiziellen dokumentiert werden muss docs, um eine echte Kommentar-Syntax zu sein, dann ja, Sie hätten Recht zu sagen, dass es nicht ist garantiert als Teil der Sprachspezifikation.

In jedem Fall sollte Ihr Redakteur in der Lage sein, einen ausgewählten Kommentar einfach auskommentieren zu lassen Region (indem Sie eine # vor jeder Zeile einzeln). Wenn nicht, wechseln Sie zu Ein Editor, der das tut.

Die Programmierung in Python ohne bestimmte Textbearbeitungsfunktionen kann sehr schmerzhaft sein Erfahrung. Den richtigen Editor zu finden (und zu wissen, wie man ihn benutzt) kann einen großen machen Unterschied in wie die Python-Programmiererfahrung wahrgenommen wird.

Der Redakteur sollte nicht nur ausgewählte Regionen auskommentieren können, sondern auch auch in der Lage sein, Blöcke von Code nach links und rechts leicht zu verschieben, und sollten Wenn Sie drücken, wird der Cursor automatisch auf die aktuelle Einrückungsebene gesetzt Eingeben. Code-Faltung kann auch nützlich sein.


Zum Schutz gegen Linkverfall, hier ist der Inhalt von Guido van Rossums Tweet:

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


63
2017-10-08 12:54



In Python 2.7 lautet der mehrzeilige Kommentar:

"""
This is a
multilline comment
"""

Wenn Sie sich in einer Klasse befinden, sollten Sie sie richtig eintragen.

Beispielsweise:

class weather2():
   """
   def getStatus_code(self, url):
       world.url = url
       result = requests.get(url)
       return result.status_code
   """

Ich hoffe, es hilft!


27
2018-02-16 14:00



Von der angenommenen Antwort ...

Sie können Strings in dreifacher Anführungszeichen verwenden. Wenn sie kein Docstring sind (erstes Ding in einer Klasse / Funktion / Modul), werden sie ignoriert.

Das ist einfach nicht wahr. Im Gegensatz zu Kommentaren werden Strings in dreifacher Anführungszeichen 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 wirst 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()

23
2018-06-29 13:04



AFAIK, Python hat keine Blockkommentare. Um einzelne Zeilen zu kommentieren, können Sie die # Charakter.

Wenn Sie verwenden Notizblock ++, Es gibt eine Verknüpfung zum Blockkommentar. Ich bin sicher, andere mögen gVim und Emacs haben ähnliche Eigenschaften.


22
2017-10-08 12:55



Ich denke, es ist nicht, außer dass eine mehrzeilige Zeichenfolge nicht verarbeitet wird. Die meisten, wenn nicht sogar alle Python-IDEs haben einen Shortkey zum Auskommentieren mehrerer Codezeilen.


9
2017-10-08 12:54



Wenn du einen Kommentar eingibst

"""
long comment here
"""

In der Mitte eines Skripts erkennt Python / Linters das nicht. Das Falten wird durcheinander gebracht, da der obige Kommentar nicht Teil der Standardempfehlungen ist. Es ist besser zu benutzen

# long comment
# here.

Wenn du benutzt vimDu kannst Plugins wie https://github.com/tpope/vim-commentary, um lange Zeilen von Kommentaren durch Drücken von automatisch zu kommentieren Vjgcc. Woher Vj wählt 2 Zeilen Code und gcc kommentiert sie.

Wenn Sie Plugins wie oben nicht verwenden möchten, können Sie suchen und ersetzen wie

:.,.+1s/^/# /g.

Dies ersetzt das erste Zeichen in der aktuellen und nächsten Zeile mit #.


4
2018-01-31 18:16



Auf Python 2.7.13:

Single:

"A sample single line comment "

Mehrzeilig:

"""
A sample
multiline comment
on PyCharm
"""

3
2018-05-11 15:47



Nun, Sie können das versuchen (wenn Sie das Zitat ausführen, sollte die Eingabe der ersten Frage mit zitiert werden) '):

"""
print("What's your name? ")
myName = input()
print("It's nice to meet you " + myName)
print("Number of characters is ")
print(len(myName))
age = input("What's your age? ")
print("You will be " + str(int(age)+1) + " next year.")

"""
a = input()
print(a)
print(a*5)

Was auch immer dazwischen eingeschlossen ist """ wird kommentiert.

Wenn Sie nach einzeiligen Kommentaren suchen, dann ist es das #.


3
2017-09-15 05:27



Wie man kommentiert:

'''
   Comment what you want here
'''

oder

 """
    Comment what you want here
 """

2
2017-07-11 12:40



Leider Stringifikation nicht immer kann als Kommentar verwendet werden! So ist es sicherer, beim Standard zu bleiben, der jede Zeile mit einem # voraussetzt.

Hier ist ein Beispiel:

test1 = [1, 2, 3, 4,] # test1 enthält 4 ganze Zahlen

test2 = [1, 2, '' '3, 4,' ''] # test2 enthält 2 ganze Zahlen und die Schnur "3, 4"


2
2018-06-27 14:44