我最近开始学习Python,但我找不到如何实现多行注释。大多数语言都有块注释符号,如
/*
*/
我在Python中试过这个,但它会抛出一个错误,所以这可能不是正确的方法。 Python实际上是否具有多行注释功能?
答案 0 :(得分:1556)
您可以使用三引号字符串。当它们不是文档字符串(类/函数/模块中的第一件事)时,它们将被忽略。
'''
This is a multiline
comment.
'''
(请务必相应缩进前导'''
以避免IndentationError
。)
Guido van Rossum(Python的创造者)tweeted this作为“专业提示”。
然而,Python的样式指南,PEP8,favors using consecutive single-line comments,这也是你在许多项目中可以找到的。编辑通常有一条捷径可以轻松完成。
答案 1 :(得分:73)
Python确实有一个multiline string/comment syntax,除非用作文档字符串,multiline strings generate no bytecode - 就像#
- 前置注释。实际上,它的行为与评论完全相同。
另一方面,如果你说这种行为必须在官方记录 docs是一个真正的评论语法,然后是的,你说这不是正确的 保证作为语言规范的一部分。
在任何情况下,您的编辑器也应该能够轻松地注释掉所选的
区域(通过在每条线的前面放置#
)。如果没有,请切换到
这样做的编辑。
使用Python进行编程而没有某些文本编辑功能可能会非常痛苦 经验。找到合适的编辑器(并知道如何使用它)可以做大 感知Python编程体验的方式不同。
编辑不仅应该能够评论选定的区域,而且应该 也能够轻松地向左右移动代码块 按下时自动将光标置于当前缩进级别 输入。代码折叠也很有用。
为了防止链接衰减,以下是Guido van Rossum's tweet:
的内容@BSUCSClub Python提示:您可以将多行字符串用作多行注释。除非用作文档字符串,否则它们不会生成代码! : - )
答案 2 :(得分:36)
从接受的答案中......
您可以使用三引号字符串。当它们不是文档字符串(类/函数/模块中的第一件事)时,它们将被忽略。
这根本不是真的。与注释不同,三引号字符串仍然被解析,并且必须在语法上有效,无论它们出现在源代码中的哪个位置。
如果您尝试运行此代码......
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
你会得到......
ValueError: invalid \x escape
...在Python 2.x或...
上SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 79-80: truncated \xXX escape
...在Python 3.x上。
解析器忽略的多行注释的唯一方法是......
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()
答案 3 :(得分:30)
在Python 2.7中,多行注释是:
"""
This is a
multilline comment
"""
如果你在课堂上,你应该正确选择它。
例如:
class weather2():
"""
def getStatus_code(self, url):
world.url = url
result = requests.get(url)
return result.status_code
"""
我希望它有所帮助!
答案 4 :(得分:24)
AFAIK,Python没有阻止评论。要评论各个行,您可以使用#
字符。
如果您使用Notepad++,there is a shortcut for block commenting。我确信gVim和Emacs之类的其他人也有相似的功能。
答案 5 :(得分:11)
我认为它没有,除了不处理多行字符串。但是,大多数(如果不是全部)Python IDE都有一个用于“注释掉”多行代码的快捷键。
答案 6 :(得分:7)
如果您在
中发表评论 head3
random words
number=200
random words
...
head4
random words
number=200
random words
...
head5
random words
number=500
random words
...
在脚本中间,python / linters不会重新识别它。折叠将被搞砸,因为上述评论不是标准建议的一部分。最好使用
"""
long comment here
"""
如果您使用# long comment
# here.
,则可以使用https://github.com/tpope/vim-commentary这样的插件,按vim
自动注释掉多行评论。其中Vjgcc
选择2行代码,Vj
将其注释掉。
如果您不想使用上述插件,可以使用搜索和替换
gcc
。
这将用:.,.+1s/^/# /g
替换当前和下一行的第一个字符。
答案 7 :(得分:5)
多行注释没有这种功能。 #是注释一行代码的唯一方法。 你们中的许多人都回答'''评论'''作为他们的解决方案。尽管它似乎可以正常工作,但在Python内部使用'''会将封闭的行作为常规字符串使用,解释器不会忽略使用#等注释。
答案 8 :(得分:4)
不幸的是,并非总是字符串化可以用作注释!因此,更安全的做法是坚持在每行前面加#的标准。
这里是一个例子:
test1 = [1、2、3、4]#test1包含4个整数
test2 = [1,2,'''3,4,''']#test2包含2个整数和字符串'3,4,'
答案 9 :(得分:4)
好吧,你可以尝试这个(当运行引用时,第一个问题的输入应该引用<% response.setHeader("Strict-Transport-Security" ,"max-age=7776000" );%>
):
'
"""
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)
之间的任何内容都会被评论。
如果您正在寻找单行评论,那么它是"""
。
答案 10 :(得分:3)
如何评论:
'''
Comment what you want here
'''
或
"""
Comment what you want here
"""
答案 11 :(得分:3)
在Python 2.7.13上:
单
"A sample single line comment "
多:
"""
A sample
multiline comment
on PyCharm
"""
答案 12 :(得分:1)
python中的内联注释以哈希哈希字符开头。
hello = "Hello!" # this is inline comment
print(hello)
你好!
请注意,字符串文字中的哈希字符只是哈希字符。
dial = "Dial #100 to make an emergency call."
print(dial)
拨打100号拨打紧急电话。
哈希字符也可以用于单行或多行注释。
hello = "Hello"
world = "World"
# first print hello
# and print world
print(hello)
print(world)
你好
世界
用三重双引号将文本括起来以支持文档字符串。
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"))
约翰你好!
用三重单引号引起来的文本作为块注释。
'''
I don't care the params and
docstrings here.
'''
答案 13 :(得分:1)
'''多行评论从这里开始
import tkinter as tk
root = tk.Tk()
w = tk.Label( text="Hello Tkinter")
logo = tk.PhotoImage(file="Python.PNG")
w1 = tk.Label(root, image=logo).pack(side="right")
explanation = """At Present, only GIF and PPM/PGM are supported but am
trying it with PNG. Interface does exit to allow image file to be added easily."""
w2 = tk.Label(root, justify=tk.LEFT,padx = 0, text=explanation).pack(side="left")
root.mainloop()
'''''多行注释在这里结束。.意味着上面的代码将无法运行,并且是注释
答案 14 :(得分:1)
我建议不要在多行注释中使用"""
!
以下是一个简单的示例,以突出显示可能被视为意外行为的内容:
print('{}\n{}'.format(
'I am a string',
"""
Some people consider me a
multi-line comment, but
"""
'clearly I am also a string'
)
)
现在看一下输出:
I am a string
Some people consider me a
multi-line comment, but
clearly I am also a string
所以发生的事情是,多行字符串没有被视为注释,而是与'clearly I'm also a string'
串联形成单个字符串。
如果要注释多行,请按照PEP8准则:
print('{}\n{}'.format(
'I am a string',
# Some people consider me a
# multi-line comment, but
'clearly I am also a string'
)
)
输出:
I am a string
clearly I am also a string
答案 15 :(得分:1)
答案 16 :(得分:0)
python中实际上不存在多行注释。下面的示例包含一个未分配的字符串,该字符串已通过Python验证是否存在语法错误。
很少有像NotePad++
这样的文本编辑器为我们提供注释一段书面代码或单词的快捷方式
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
此外,在Notepad++
中使用 CTRL + K 的快捷方式来阻止注释,它在所选内容的每一行前面添加了一个#
。 CTRL + SHIFT + K 用于取消注释。
答案 17 :(得分:0)
如果在代码行中写注释,则必须写注释,在#号之前保留2个空格,在#号之前保留1个空格
print("Hello World") # printing
如果在新行上写评论,则必须写评论,在#号中留1个空格kn
# single line comment
要写超过1行的注释,请使用3个引号
"""
This is a comment
written in
more than just one line
"""
答案 18 :(得分:0)
您可以使用以下内容。这称为DockString。
def my_function(arg1):
"""
Summary line.
Extended description of function.
Parameters:
arg1 (int): Description of arg1
Returns:
int: Description of return value
"""
return arg1
print my_function.__doc__
答案 19 :(得分:0)
在其他答案中,我发现最简单的方法是使用IDE注释功能,该功能使用#的python注释支持。
我正在使用Anaconda Spyder,它具有:-
Ctrl + 1-注释/取消注释
Ctrl + 4-注释一段代码
Ctrl + 5 -取消注释代码段
它将用#注释/取消注释单行/多行代码。
我觉得最简单。
例如封锁评论
# =============================================================================
# Sample Commented code in spyder
# Hello World !
# =============================================================================
答案 20 :(得分:0)
要注释掉Python中的多行代码,只需在每行上使用#
单行注释:
# This is comment 1
# This is comment 2
# This is comment 3
在Python中编写“适当的”多行注释的方法是使用"""
语法的多行字符串
Python具有文档字符串(或文档字符串)功能。它为程序员提供了一种在每个Python模块,函数,类和方法中添加快速注释的简便方法。
'''
This is
multiline
comment
'''
还请注意,您可以通过这样的类对象访问文档字符串
myobj.__doc__
答案 21 :(得分:0)
是的,两者都可以使用
...
Specification<T> whereSpecifications = Specification.where(yourWhereSpeficiation);
Sort sortByProperty = Sort.by(Sort.Order.asc("property"));
PageRequest orderedPageRequest = PageRequest.of(1, 100, sortByProperty);
userRepository.findAll(whereSpecifications, PageRequest.of(page, limit, orderedPageRequest));
和
`'''
Comments
'''`
但是,在IDE中运行时,您唯一需要记住的就是,您必须“运行”整个文件才能被多行代码接受。逐行“运行”将无法正常工作,并且会显示错误。
答案 22 :(得分:0)
使用PyCharm IDE。
您可以使用 Ctrl + /
comment
和uncomment
行代码。 Ctrl + / 注释或取消注释当前行或用单行注释({# in Django templates, or # in Python scripts)
注释的几行。Pressing Ctrl+Shift+/
(对于Django模板中选定的源代码块)用{% comment %} and {% endcomment %}
标签包围该块。
n = 5
while n > 0:
n -= 1
if n == 2:
break
print(n)
print("Loop ended.")
选择所有行,然后按 Ctrl + /
# n = 5
# while n > 0:
# n -= 1
# if n == 2:
# break
# print(n)
# print("Loop ended.")
答案 23 :(得分:0)
Python中的多行注释: 对我来说,“''和“”都有效
例如:
a = 10
b = 20
c = a+b
'''
print ('hello')
'''
print ('Addition is : ',a+b)
例如:
a = 10
b = 20
c = a+b
"""
print ('hello')
"""
print ('Addition is : ',a+b)
答案 24 :(得分:-1)
选择要注释的行,然后使用“ CTRL +?”在sublime编辑器中注释或取消注释python代码。 对于单行,您可以使用'shift +#'。
答案 25 :(得分:-1)
在python中,您可以按照以下步骤轻松使用多行注释
您可以将此文档字符串用于 Python 中的多行注释。
""" print("结果为真")
"""