Is there a way to create multiline comments in Python?

Posted on

Question :

Is there a way to create multiline comments in Python?

I have recently started studying Python, but I couldn’t find how to implement multi-line comments. Most languages have block comment symbols like

/*

*/

I tried this in Python, but it throws an error, so this probably is not the correct way. Does Python actually have a multiline comment feature?

Answer #1:

You can use triple-quoted strings. When they’re not a docstring (the first thing in a class/function/module), they are ignored.

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

(Make sure to indent the leading ''' appropriately to avoid an IndentationError.)

Guido van Rossum (creator of Python) tweeted this as a “pro tip”.

However, Python’s style guide, PEP8, favors using consecutive single-line comments, like this:

# This is a multiline
# comment.

…and this is also what you’ll find in many projects. Text editors usually have a shortcut to do this easily.

Answered By: Petr Viktorin

Answer #2:

Python does have a multiline string/comment syntax in the sense that unless used as docstrings, multiline strings generate no bytecode — just like #-prepended comments. In effect, it acts exactly like a comment.

On the other hand, if you say this behavior must be documented in the official documentation to be a true comment syntax, then yes, you would be right to say it is not guaranteed as part of the language specification.

In any case, your text editor should also be able to easily comment-out a selected region (by placing a # in front of each line individually). If not, switch to a text editor that does.

Programming in Python without certain text editing features can be a painful experience. Finding the right editor (and knowing how to use it) can make a big difference in how the Python programming experience is perceived.

Not only should the text editor be able to comment-out selected regions, it should also be able to shift blocks of code to the left and right easily, and it should automatically place the cursor at the current indentation level when you press Enter. Code folding can also be useful.


To protect against link decay, here is the content of Guido van Rossum’s tweet:

@BSUCSClub Python tip: You can use multi-line strings as multi-line comments. Unless used as docstrings, they generate no code! πŸ™‚

Answered By: unutbu

Answer #3:

From the accepted answer…

You can use triple-quoted strings. When they’re not a docstring (first thing in a class/function/module), they are ignored.

This is simply not true. Unlike comments, triple-quoted strings are still parsed and must be syntactically valid, regardless of where they appear in the source code.

If you try to run this code…

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

You’ll get either…

ValueError: invalid x escape

…on Python 2.x or…

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

…on Python 3.x.

The only way to do multi-line comments which are ignored by the parser is…

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()
Answered By: Aya

Answer #4:

In Python 2.7 the multiline comment is:

"""
This is a
multilline comment
"""

In case you are inside a class you should tab it properly.

For example:

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

Answer #5:

AFAIK, Python doesn’t have block comments. For commenting individual lines, you can use the # character.

If you are using Notepad++, there is a shortcut for block commenting. I’m sure others like gVim and Emacs have similar features.

Answered By: Sanjay T. Sharma

Answer #6:

I think it doesn’t, except that a multiline string isn’t processed. However, most, if not all Python IDEs have a shortkey for ‘commenting out’ multiple lines of code.

Answered By: Anti Earth

Answer #7:

If you put a comment in

"""
long comment here
"""

in the middle of a script, Python/linters won’t recognize that. Folding will be messed up, as the above comment is not part of the standard recommendations. It’s better to use

# Long comment
# here.

If you use Vim, you can plugins like commentary.vim, to automatically comment out long lines of comments by pressing Vjgcc. Where Vj selects two lines of code, and gcc comments them out.

If you don’t want to use plugins like the above you can use search and replace like

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

This will replace the first character on the current and next line with #.

Answered By: alpha_989

Answer #8:

There is no such feature as a multi-line comment. # is the only way to comment a single line of code.
Many of you answered ”’ a comment ”’ this as their solution.

It seems to work, but internally ''' in Python takes the lines enclosed as a regular strings which the interpreter does not ignores like comment using #.

Check the official documentation here

Answered By: RATAN KUMAR

Leave a Reply

Your email address will not be published.