关于docstring:如何在python中注释出代码块

How to comment out a block of code in Python

本问题已经有最佳答案,请猛点这里访问。

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

现在,我唯一能看到的注释代码的方法是,要么用#开始每一行,要么用三个引号将代码括起来:"""

这些问题在于,在每行之前插入#比较麻烦,并且"""使我想用作注释的字符串出现在生成的文档中。

在阅读了所有评论之后,答案似乎是"不"。


python没有这样的机制。在每行前面加一个#来阻止注释。有关更多信息,请参阅PEP 8。大多数pythonide都支持一种机制,可以为您自动使用pound符号进行块注释。例如,在我的机器空闲时,它是alt+3alt+4

不要使用三引号;正如您发现的,这是用于文档字符串而不是块注释,尽管它有类似的效果。如果你只是暂时把事情说出来,这可以作为一种临时措施。


唯一能治好这病的方法就是找个好编辑。对不起的。


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

1
2
3
'''
...statements...
'''
and None

或:

1
2
3
if False: '''
...statements...
'''


在没有三个引号的情况下,唯一可以做到这一点的方法是添加:

1
if False:

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

许多python-ide可以在每一行上为您添加#,在取消注释时也可以删除它们。同样,如果使用vi或emacs,可以为代码块创建一个宏来执行此操作。


M-X注释区域,在Emacs的python模式下。


在Mac上的JetBrains PyCharm中,使用commandakbd+/对选定的代码块进行注释/取消注释。在Windows上,使用ctrl+/


至少在vim中,您可以使用块视觉模式(非Windows vims中的CTRL+V)选择要插入的文本的第一列,然后在每行之前使用此序列预先准备一个#

1
I#<esc>

在块视觉模式中,I移动到插入模式,光标位于块第一行的前面。插入的文本将复制到块中的每一行之前。


六:

  • 到块的顶部用字母A标记。
  • 转到块的底部并用字母B标记

然后做

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


1
2
3
4
comm='''
Junk, or working code
that I need to comment.
'''

您可以用您选择的一个变量替换comm,该变量可能较短、易于触摸,并且您知道在您的程序中不会(也不会)发生这种情况。示例:xxxoonullnil


是的,有(取决于你的编辑)。在pydev(和aptana studio with pydev)中:

  • ctrl+4-注释选择块

  • ctrl+5-取消对所选块的注释


在Eclipse + PyDeV中,Python块注释类似于Eclipse Java块注释;选择要注释的行,并使用CtR+/进行注释。要取消注释块的注释,请执行相同的操作。


在使用用于Visual Studio的python工具的Visual Studio中,块可以由ctrl+kbakbd、ctrl+c注释掉,也可以由ctrl+kbakbd、ctrl+u注释掉。


注释掉python代码(理解为解释器忽略的代码)的唯一机制是。

正如您所说,您还可以使用字符串文本,这些字符串文本不被解释器忽略,但与程序执行完全无关。


我在Windows机器上使用记事本+,选择代码,键入CTRL-K。要取消注释,请选择"代码",然后按ctrl+shift+kbd。

顺便说一下,记事本++作为一个Python编辑器工作得很好。具有自动完成、代码折叠、语法突出显示等功能。它是自由的,就像在演讲和啤酒中一样!


在使用pydev的eclipse中,您可以选择一个代码块,然后按ctrl+


在eric4上有一种简单的方法:选择一个块,键入ctrl+m来注释整个块,或键入ctrl+alt+m取消注释。


另一个基于编辑器的解决方案:Emacs中的文本"矩形"。

突出显示要注释的代码,然后是c-x-r-t#

取消对代码的注释:突出显示,然后是C-X-R-K

我每天都用这个。(当然,分配给热键。)

这个强大的regex搜索/替换是我容忍emacs的其他"偏心"的原因。


三个引号对我来说是可以的。您可以将"foo"用于docstrings,将"bar"用于注释,反之亦然,以使代码更具可读性。


使用scite这样的编辑器,选择代码,按ctrl+q并完成。

如果没有支持块注释的编辑器,可以在代码块的开头和结尾使用三重引号的字符串"有效地"注释掉它。但这不是最佳实践。