如何进行多行注释?大多数语言都有块注释符号,例如:
/*
*/
#
是发表评论的唯一方法。我猜想以这种方式解释 Python 脚本会更容易。
您可以使用三引号字符串。当它们不是文档字符串(类/函数/模块中的第一件事)时,它们将被忽略。
'''
This is a multiline
comment.
'''
(确保适当缩进前导 '''
以避免出现 IndentationError
。)
Guido van Rossum(Python 的创建者)tweeted this 作为“专业提示”。
但是,Python 的样式指南 PEP8 favors using consecutive single-line comments 是这样的:
# This is a multiline
# comment.
...这也是您在许多项目中会发现的。文本编辑器通常有一个快捷方式来轻松完成此操作。
Python 确实有一个 multiline string/comment syntax,除非用作文档字符串,否则 multiline strings generate no bytecode - 就像 #
前置注释一样。实际上,它的行为与评论完全一样。
另一方面,如果您说这种行为必须在官方文档中记录为真正的注释语法,那么是的,您可以说它不能作为语言规范的一部分得到保证。
在任何情况下,您的文本编辑器还应该能够轻松地注释掉选定的区域(通过分别在每行前面放置一个 #
)。如果没有,请切换到可以的文本编辑器。
在没有某些文本编辑功能的情况下使用 Python 编程可能是一种痛苦的体验。找到合适的编辑器(并知道如何使用它)可以对 Python 编程体验的感知方式产生很大影响。
文本编辑器不仅应该能够注释掉选定的区域,它还应该能够轻松地左右移动代码块,并且当您按下 Enter 时,它应该自动将光标置于当前缩进级别。代码折叠也很有用。
为防止链接衰减,以下是 Guido van Rossum's tweet 的内容:
@BSUCSClub Python 提示:您可以使用多行字符串作为多行注释。除非用作文档字符串,否则它们不会生成任何代码! :-)
从接受的答案...
您可以使用三引号字符串。当它们不是文档字符串(类/函数/模块中的第一件事)时,它们会被忽略。
这是不正确的。与注释不同,三引号字符串仍然会被解析并且必须在语法上有效,无论它们出现在源代码中的什么位置。
如果您尝试运行此代码...
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()
r'raw string'
-- r'\xor' == '\\xor'
。
*/
,因为它会终止块。
'''
“评论”有更多限制。您只能注释掉整个语句,而注释可以注释掉部分表达式。示例:在 C 中,您可以注释掉一些列表元素:int a[] = {1, 2, /* 3, 4, */ 5};
。使用多行字符串,您不能这样做,因为这会将字符串放入您的列表中。
在 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
"""
weather2
注释实际上是一个文档字符串,因为它是类中的第一件事。
AFAIK,Python 没有块注释。要注释单个行,您可以使用 #
字符。
如果您使用 Notepad++,there is a shortcut for block commenting。我相信像 gVim 和 Emacs 这样的其他人也有类似的功能。
我认为它没有,除了不处理多行字符串。但是,大多数(如果不是全部)Python IDE 都有一个用于“注释掉”多行代码的快捷键。
没有像多行注释这样的功能。 #
是注释单行代码的唯一方法。你们中的许多人回答'''评论'''这是他们的解决方案。
它似乎有效,但在 Python 内部 '''
将包含的行作为常规字符串,解释器不会像使用 #
的注释一样忽略这些行。
Check the official documentation here
如果你在里面发表评论
"""
long comment here
"""
在脚本中间,Python/linter 无法识别。折叠会搞砸,因为上述评论不是标准建议的一部分。最好用
# Long comment
# here.
如果您使用 Vim,您可以使用 commentary.vim 之类的插件,通过按 Vjgcc
来自动注释掉长行的评论。其中 Vj
选择两行代码,gcc
将它们注释掉。
如果您不想使用上述插件,可以使用搜索和替换
:.,.+1s/^/# /g
这会将当前行和下一行的第一个字符替换为 #
。
不幸的是,字符串化并不总是可以用作注释!因此,坚持在每行前面加上 #
的标准会更安全。
这是一个例子:
test1 = [1, 2, 3, 4,] # test1 contains 4 integers
test2 = [1, 2, '''3, 4,'''] # test2 contains 2 integers **and the string** '3, 4,'
我建议不要将 """
用于多行注释!
下面是一个简单的示例,用于强调可能被视为意外行为的情况:
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'
连接以形成单个字符串。
如果您想评论多行,请按照PEP 8指南进行:
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
好吧,你可以试试这个(运行引用时,第一个问题的输入应该用 '
引用):
"""
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)
"""
之间包含的任何内容都将被注释。
如果您正在寻找单行注释,那么它就是 #
。
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)
在 Python 2.7.13 上:
单身的:
"A sample single line comment "
多行:
"""
A sample
multiline comment
on PyCharm
"""
Python 中的内联注释以哈希字符开头。
hello = "Hello!" # This is an 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 parameters and
docstrings here.
'''
如果在一行代码中写注释,必须写注释,#号前留2个空格,#号前留1个空格
print("Hello World") # printing
如果在新行写注释,则必须写注释,在#号处留1个空格kn
# single line comment
要写超过 1 行的评论,请使用 3 个引号
"""
This is a comment
written in
more than just one line
"""
使用 PyCharm IDE。
您可以使用 Ctrl+/ 注释和取消注释代码行。 Ctrl+/ 使用单行注释({# 在 Django 模板中,或 # 在 Python 脚本中)注释或取消注释当前行或选定的几行。在 Django 模板中为选定的源代码块按 Ctrl+Shift+/ 会用 {% comment %} 和 {% 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.")
是的,两者都可以使用:
'''
Comments
'''
和
"""
Comments
"""
但是,在 IDE 中运行时,您唯一需要记住的是,您必须“运行”整个文件才能被接受为多行代码。逐行“运行”将无法正常工作,并会显示错误。
在其他答案中,我发现最简单的方法是使用使用 #
的 Python 注释支持的 IDE 注释函数。
我正在使用 Anaconda Spyder,它具有:
Ctrl + 1 - 评论/取消评论
Ctrl + 4 - 注释代码块
Ctrl + 5 - 取消注释代码块
它将使用 #
注释/取消注释单行/多行代码。
我觉得是最简单的。
例如,块注释:
# =============================================================================
# Sample Commented code in spyder
# Hello, World!
# =============================================================================
要在 Python 中注释掉多行代码,只需在每一行上使用 #
单行注释:
# This is comment 1
# This is comment 2
# This is comment 3
在 Python 中编写“正确的”多行注释是使用具有 """
语法的多行字符串 Python 具有文档字符串(或文档字符串)功能。它为程序员提供了一种为每个 Python 模块、函数、类和方法添加快速注释的简单方法。
'''
This is
multiline
comment
'''
另外,提到您可以通过这样的类对象访问文档字符串
myobj.__doc__
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
此外,Ctrl + K 是 Notepad++ 中阻止评论的快捷方式。它在所选内容下的每一行前面添加一个 #
。 Ctrl + Shift + K 用于块取消注释。
您可以使用以下内容。这称为 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__
是的,您可以简单地使用
'''
Multiline!
(?)
'''
或者
"""
Hello
World!
"""
奖励:有点难,但在旧版本、print
函数或 GUI 中使用会更安全:
# This is also
# a multiline comment.
对于这一点,您可以在 PyCharm 和 VS Code 中选择要评论的文本并按 Ctrl
/
(或 ⌘
/
) .
但是您可以编辑它们。例如,您可以将快捷方式从 Ctrl
/
更改为 Ctrl
Shift
C
。
警告!
小心,不要覆盖其他快捷方式!注释必须正确缩进!
希望这个答案有所帮助。祝你下次写其他答案时好运!
不定期副业成功案例分享
test.py
中放了一个巨大的多行字符串,只是为了看看。当我执行import test
时,会生成一个test.pyc
文件。不幸的是,pyc
文件很大,并且包含作为纯文本的整个字符串。是我误解了什么,还是这条推文不正确?pyc
中消失。我编辑了答案并将“模块”放入具有文档字符串的事物列表中。"""
用于文档字符串,将'''
用于块注释很有帮助。通过这种方式,您可以将'''
包裹在您常用的文档字符串周围而不会发生冲突。#
行来区分段落。