如何在Python中注释掉一段代码块

554

有没有一种机制可以注释掉大量的Python代码?

目前,我所知道注释代码的方式是在每行前加上# 或将代码用三个引号括起来:"""

这些方式的问题在于:在每一行前添加#太麻烦,而"""会使我想用作注释的字符串出现在生成的文档中。

经过阅读所有评论,答案似乎是“没有”。


3
这个问题之前在 Stack Overflow 上被回答过,具体可以看 *为什么 Python 没有多行注释?*。 - ChristopheD
专业实践的附加指南,“不要使用三引号”,使其与其他帖子区分开来... - AjayKumarBasuthkar
13
叹气。又有一个有用而非重复的问题被标记为重复……这个问题要求解决方案,而另一个问题则将答案(即没有解决方案)作为先决条件来提出它所要问的问题。 - Helen
3
Ctrl + / 可以在 PyCharm 中使用。 - Lakhwinder Singh Dhillon
1
Perl允许您使用文档语法进行块注释,以使其不会出现在文档中。这就是为什么我们有多种方法来完成事情的原因。这被称为“灵活性”。 - mpersico
对于Jupyter,使用 Crtl + / 进行注释,使用 Crtl - / 进行取消注释。 - circassia_ai
19个回答

482

Python没有类似的机制。在每行前添加#来进行块注释。更多信息请参见PEP 8。大多数Python集成开发环境都支持自动使用井号进行块注释的机制。例如,在我的电脑上的IDLE中,可以使用Alt+3Alt+4进行。

不要使用三引号;正如你发现的那样,它是用于文档字符串而不是块注释,虽然具有类似的效果。如果您只是暂时注释掉一些代码,这是一个可行的临时措施。


99
对于非美国人来说,这是一个“井号”符号。 - edam
75
在Notepad++中,对于任何支持的语言,快捷键为Ctrl+K(版本为5.9.2)。 - Janusz Lenar
51
即使对于美国人来说,“pound” 应该是 £ 或 ₤。 - glglgl
72
实际上,那个符号叫八角星号。请停止使用地方俚语术语——很少有美国人称其为“hash”,很少有非美国人称其为“pound”,但是当他们说“octothorp”时,没有人会提到其他任何东西。除了那些选择用它来表示其他含义的人。 - ArtOfWarfare
10
Python的创造者实际上建议将多行字符串用作块注释,因此我会说你的声明“不要使用三个引号”是不恰当的。 - Jesse Webb
显示剩余17条评论

102

在不会被误认为是文档字符串的上下文中隐藏三重引号,例如:

'''
...statements...
''' and None

或者:

if False: '''
...statements...
'''

23
我不认为这是一个好建议,这样做会使你的代码变得更加复杂,而没有任何真正的好处。读者需要弄清楚为什么要写那段代码以及它的作用是什么。 - Facundo Casco
7
如果你想注释的代码已经包含三引号字符串,该怎么办? - Keith Thompson
1
幸运的是,它没有。 - Zack
1
@keithThompson 然后使用另一种三引号字符串。 - Leo

99

我所知道的唯一解决方案就是使用一个好的编辑器。抱歉。


44
当然,所有真正的Python程序员都使用ed,在这里可以轻松地解决这个问题:12,31s/^/#/。 - John Fouhy
3
使用NerdCommenter插件的vim。选中你想要注释的块,然后输入",c<空格>". - dev_nut

48

如果不使用三重引号,唯一的方法是添加:

if False:

然后缩进所有的代码。请注意,代码仍需要具有正确的语法。


许多Python IDE可以为您在每个选定行上添加#,并在取消注释时删除它们。同样,如果您使用viEmacs,您可以创建一个宏来为您处理一整块代码。

1
该操作提到他们不希望将注释显示为文档字符串。 - Ed S.
-1 已撤回。虽然这是个聪明的想法,但可能意味着需要对注释进行注释 :) - Ed S.
3
这种解决方案类似于注释掉代码,只不过你需要加入四个空格代替 # 号,并且还需要添加一行 "if False:"。 - Yoo
1
我正在进行一些脚本黑客活动,这就是我想出来的东西。(所以,+1)。非常流畅,我只需编写“if False:”,将块推移1个制表符,然后完成。我使用过不止一个编辑器,其中该方法仅仅是突出显示块,然后按Tab键。奇怪的是,我曾经为了向朋友炫耀新的S.O.而提出了原始问题。 - gbarry
2
在 PyCharm 中,Ctrl+ / 或 Ctrl + Shift+/ 的作用是相同的。 - Kazem

43
在Mac上使用JetBrains PyCharm时,使用Command + /来注释/取消注释所选代码块。在Windows上,使用CTRL + /

4
这对于 PyCharm 社区版同样适用,该版本是免费且开源的。 - Arda
也适用于Text Wrangler。谢谢! - suyash gautam
1
在 Windows 上,对于瑞典键盘布局,CTRL+/ 不起作用。 - HelloGoodbye
也适用于 macOS 上的 VSCode。 - Hang Chen
也适用于 Windows 上的 VSCode。 - Marja van der Wind

29

Emacs的Python模式下,使用 M-x comment-region 命令。


10
M-;(comment-dwim)也。请问需要进一步的上下文信息才能确定要翻译哪个意思。 - Yoo

18
在VIM中,你可以使用块视觉模式(在非Windows VIM中按CTRL+V)来选择要插入的文本的第一列,然后使用以下顺序在每行前面添加#
I#<esc>

在块级可视模式下,I键可以将光标移动到第一行的块前,并进入插入模式。插入的文本会复制到块中每一行之前


13

vi 中:

  • 移动到块的顶部并用字母 a 标记它。
  • 移动到块的底部并用字母 b 标记它。

然后执行:

:'a,'b s!^!#!

如果文本高亮让你感到不适,可以使用命令“:noh”取消高亮。要将文本注释掉,可以使用命令“CTRL+V”(并选择行)=>“:s/^/#/g”。 - Luciano Fantuzzi

11
comm='''
Junk, or working code 
that I need to comment.
'''

你可以用一个变量来替换comm,这个变量可以是你选择的更短、易于触摸输入且确定不会在程序中出现的名称。例如:xxxoonullnil


1
这将在运行时加载到内存中,如果意图是创建注释,则希望程序忽略它。在每行前面加上 # 更好。还要避免将事物分配给名为 null 的变量,这只会引发灾难。 - James Geddes

6
我在 Windows 机器上使用 Notepad++,选择您的代码,输入 CTRL-K 进行注释。要取消注释,选择代码并按下 Ctrl + Shift + K。顺便说一句,Notepad++ 可以很好地作为 Python 编辑器使用。它具有自动补全、代码折叠、语法高亮等功能,并且是免费的,就像言论自由和啤酒一样!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接