问题
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?
回答1:
You can use triple-quoted strings. When they're not a docstring (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, and this is also what you'll find in many projects. Editors usually have a shortcut to do this easily.
回答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 docs 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 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
an 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 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 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! :-)
回答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()
回答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
"""
回答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.
回答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.
回答7:
If you put a comment in
"""
long comment here
"""
in the middle of a script, python/linters wont reccognize that. Folding will be messed up, as the above comment is not part of the standard recommendations. Its better to use
# long comment
# here.
If you use vim
, you can plugins like https://github.com/tpope/vim-commentary, to automatically comment out long lines of comments by pressing Vjgcc
. Where Vj
selects 2 lines of code, and gcc
comments them out.
If you dont 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 #
.
回答8:
There is no such feature of multi-line comment. # is the only way to comment a single line of code. Many of you answered ''' a comment ''' this as their solution. Though it seems to work but internally ''' in python takes the lines enclosed as a regular strings which interpreter does not ignores like comment using #.
Check official documentation here
回答9:
Unfortunately stringification not always can be used as commenting out! So it is safer to stick to the standard prepending each line with a #
.
Here is an example:
test1 = [1, 2, 3, 4,] # test1 contains 4 integers
test2 = [1, 2, '''3, 4,'''] # test2 contains 2 integers **and the string** '3, 4,'
回答10:
Well, you can try this (when running the quoted, the input to the first question should quoted with '
):
"""
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)
Whatever enclosed between """
will be commented.
If you are looking for single-line comments then it's #
.
回答11:
The inline comments in python starts with hash hash character.
hello = "Hello!" # this is inline comment
print(hello)
Hello!
Note that a hash character within a string literal is just a hash character.
dial = "Dial #100 to make an emergency call."
print(dial)
Dial #100 to make an emergency call.
A hash character can also be used for single or multiple lines comments.
hello = "Hello"
world = "World"
# first print hello
# and print world
print(hello)
print(world)
Hello
World
Enclose the text with triple double quotes to support docstring.
def say_hello(name):
"""
This is docstring comment and
it's support multi line.
:param name it's your name
:type name str
"""
return "Hello " + name + '!'
print(say_hello("John"))
Hello John!
Enclose the text with triple single quotes for block comments.
'''
I don't care the params and
docstrings here.
'''
回答12:
On Python 2.7.13:
Single:
"A sample single line comment "
Multiline:
"""
A sample
multiline comment
on PyCharm
"""
回答13:
Multiline comment in Python: For me, both ''' and """ worked
Ex:
a = 10
b = 20
c = a+b
'''
print ('hello')
'''
print ('Addition is : ',a+b)
Ex:
a = 10
b = 20
c = a+b
"""
print ('hello')
"""
print ('Addition is : ',a+b)
回答14:
For commenting out multiple lines of code in Python is to simply use a #
single-line comment on every line:
# This is comment 1
# This is comment 2
# This is comment 3
For writing “proper” multi-line comments in Python is to use multi-line strings with the """
syntax
Python has the documentation strings (or docstrings) feature. It gives programmers an easy way of adding quick notes with every Python module, function, class, and method.
'''
This is
multiline
comment
'''
Also, mention that you can access docstring by a class object like this
myobj.__doc__
回答15:
Yes, it is fine to use both
'''
Comments
'''
and
"""
Comments
"""
But, the only thing you all need to remember while running in an IDE, you have to 'RUN' the entire file to be accepted as multiple lines codes. Line by line 'RUN' won't work properly and will show an error.
回答16:
I would advise against using """
for multi line comments!
Here is a simple example to highlight what might be considered an unexpected behavior:
print('{}\n{}'.format(
'I am a string',
"""
Some people consider me a
multi-line comment, but
"""
'clearly I am also a string'
)
)
now have a look at the output:
I am a string
Some people consider me a
multi-line comment, but
clearly I am also a string
So what happened is that the multi line string was not treated as comment, but concatenated with 'clearly I'm also a string'
to form a single string.
If you want to comment multiple lines do so according to the PEP8 guidelines:
print('{}\n{}'.format(
'I am a string',
# Some people consider me a
# multi-line comment, but
'clearly I am also a string'
)
)
Output:
I am a string
clearly I am also a string
回答17:
A multiline comment doesn't actually exist in python. The below example consists of an unassigned string, which is validated by Python for syntactical errors.
Few text editors like NotePad++
provides us shortcuts to comment a written piece of code or words
def foo():
"This is a doc string."
# A single line comment
"""
This
is a multiline
comment/String
"""
"""
print "This is a sample foo function"
print "This function has no arguments"
"""
return True
Also, CTRL + K a shortcut in Notepad++
to block comment, it adds a #
in front of every line under the selection. CTRL + SHIFT+ K is for block uncomment.
回答18:
Using PyCharm IDE.
You can
comment
anduncomment
lines of code using Ctrl+/. Ctrl+/ comments or uncomments the current line or several selected lines with single line comments({# in Django templates, or # in Python scripts)
.Pressing Ctrl+Shift+/
for a selected block of source code in a Django template surrounds the block with{% comment %} and {% endcomment %}
tags.
n = 5
while n > 0:
n -= 1
if n == 2:
break
print(n)
print("Loop ended.")
Select all lines then press Ctrl + /
# n = 5
# while n > 0:
# n -= 1
# if n == 2:
# break
# print(n)
# print("Loop ended.")
回答19:
Among other answers, I find the easiest way is to use IDE comment functions which use python comment support of #
I am using Anaconda Spyder and it has :-
Ctrl+1 - Comment/uncomment
Ctrl+4 - Comment a block of code
Ctrl+5 - Uncomment a block of code
It would comment/uncomment a single/multi line/s of code with #.
I find it the easiest.
For e.g. a block comment
# =============================================================================
# Sample Commented code in spyder
# Hello World !
# =============================================================================
回答20:
VS Code universal official multi-line comment toggle.
macOS: Select code-block then ⌘+/
Windows: Select code-block then Ctrl+/
回答21:
Select the lines that you want to comment and then use 'CTRL + ?' to comment or uncomment the python code in sublime editor. For single line you can use 'shift + #'.
来源:https://stackoverflow.com/questions/7696924/way-to-create-multiline-comments-in-python