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

gba*_*rry 452 python docstring

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

现在,我能看到注释掉代码的唯一方法是用a开始每一行#,或用三引号括起代码:""".

这些问题是#在每行之前插入很麻烦,"""并使我想用作注释的字符串显示在生成的文档中.

阅读完所有评论后,答案似乎是"不".

Joh*_*lla 420

Python没有这样的机制.#在每行前面加上一条来阻止评论.有关更多信息,请参阅PEP 8.大多数Python IDE都支持一种机制来自动为您执行块注释 - 带符号.例如,在我的机器上的IDLE中,它是Alt+ 3Alt+ 4.

不要使用三引号; 正如您所发现的,这是用于文档字符串而不是阻止注释,尽管它具有类似的效果.如果你只是暂时评论一下,这可以作为临时措施.

  • @ArtOfWarfare是正确的,'#'是octothorpe.并且'*'是六面体,'+'是四面体,' - '是duothorpe.哲学问题:什么是荆棘? (131认同)
  • 对于非美国人来说,这是一个"哈希"的标志. (89认同)
  • 在**Notepad ++**中,对于任何支持的语言,都是"Ctrl + K"(v.5.9.2) (71认同)
  • 实际上,这个符号被称为octothorp.请停止使用当地俚语 - 很少有美国人称之为哈希,很少有非美国人称之为英镑,但当他们说octothorp时,没有人会提到任何其他内容.除了选择通过使用它来表达其他东西而无视这个明确答案的人. (60认同)
  • 即使对美国人来说,"英镑"应该是£或₤. (48认同)
  • @Pierre:什么是索普? - > http://english.stackexchange.com/a/190140/9001 (14认同)
  • 实际上python的创建者[建议使用多行字符串作为块注释](http://stackoverflow.com/a/7696966/346561),所以我要说你的语句"不要使用三引号"isn'适当的. (8认同)
  • 来自Microsoft开发人员,#是一个"尖锐"的标志 (8认同)
  • 将其称为哈希,哈希符号或数字符号是最好的选择.特别是现在2017年,哈希是引用该符号的最常用方式之一.除了人们试图炫耀他们知道它被称为octothorpe之外,没有人将它称为octothorpe.https://www.oxfordlearnersdictionaries.com/us/definition/english/hash_1?q=hash (5认同)
  • @Hugo:谢谢你的澄清.实际上,我的意思是Zen Koan,vg."一手鼓掌的声音是什么".一条荆棘将是一条终止于页面边缘的线条,其另一端无限且从未见过.像磁单极子. (4认同)
  • 正确的术语是“数字符号”(Unicode U + 0023)。它还在“ octothorpe”,“ crosshatch”,“英镑符号”和“ hash”下索引。 (4认同)
  • @JesseWebb:尽管如此,他写了大约两年半的答案,所以他改变了主意.:) (3认同)
  • **PyCharm**中的`Ctrl + /`将对突出显示的行进行注释/取消注释 (3认同)
  • 这对音乐家来说是一个尖锐的标志.(例如,一个主要尺度:ABC#DEF#G#A) (3认同)
  • @johnktejik这个“♯”是一个尖锐的符号。“#”是数字sig。 (3认同)
  • @JesseWebb虽然可能会注意到使用三引号,但是我发现python库中的一个错误我正在使用(Pyshark)关于Python 3.在pyshark库中的三重引用注释中曾经存在这一行:(即\设备\ NPF_ ..).这在Python2中被忽略并运行良好,但是Python 3抛出了这个错误:"SyntaxError :( unicode error)'unicodeescape'编解码器无法解码位置14-15中的字节:格式错误的\ N字符." 从那时起,我避免使用三重引号. (2认同)
  • @Pierre实际上你发送的字形是一个五面体.如果这个站点使用serif字体,它将是一个hexathrope.星号很奇怪. (2认同)
  • 奥克索普!像任何人一样大声笑着称呼它。这是一个“尖锐的”。它不是在1960年发明的,而是一种音乐符号,可以追溯到计算机之前。 (2认同)
  • 我发现python没有注释掉大块代码的机制真是太愚蠢了。对于为消除乏味而编写的语言,这种确定是乏味的。 (2认同)
  • “很少有美国人称其为哈希,很少有非美国人称其为磅” 称其为哈希的美国人数量加上称其为磅的非美国人数量至少是地球上人口数量的 1,000 倍称之为奥克托索普。 (2认同)

小智 92

我知道的唯一治疗方法是一位优秀的编辑.抱歉.

  • 显然,所有Real Python程序员都使用ed,这个问题可以通过以下方式轻松解决:12,31s/^ /#/ (36认同)
  • vim with nerdcommenter.选择所需的块,c <space> (2认同)

bob*_*nce 78

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

'''
...statements...
''' and None
Run Code Online (Sandbox Code Playgroud)

要么:

if False: '''
...statements...
'''
Run Code Online (Sandbox Code Playgroud)

  • 我不认为这是一个很好的建议,你增加了代码的复杂性而没有任何实际的好处.有人在阅读时必须弄清楚为什么那里有代码以及它要做什么. (20认同)
  • 如果要注释掉的代码已包含三引号字符串,该怎么办? (4认同)

Bri*_*ndy 40

没有三重引号的唯一方法是添加:

if False:
Run Code Online (Sandbox Code Playgroud)

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


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

  • 该解决方案类似于仅仅注释掉代码,除了您添加四个空格而不是#并且还需要添加"if False:"行. (2认同)
  • PyCharm 中的 Ctrl+ / 或 Ctrl + Shift+/ 作用相同 (2认同)

小智 28

Mx评论区域,在Emacs的Python模式中.

  • M-; (评论-dwim)也是 (10认同)

mar*_*inj 27

在JetBrains上,Mac上的PyCharm使用Command+ /来评论/取消注释选定的代码块.在Windows上,使用CTRL+ /.

  • 这也适用于PyCharm Community Edition,它是免费和开源的. (2认同)

Nat*_*man 17

至少在VIM中,您可以使用"块可视"模式(CTRL+V在非Windows VIM中)选择要插入的第一列文本,然后#使用此序列在每行前面添加一个:

I#<esc>
Run Code Online (Sandbox Code Playgroud)

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


小智 8

vi中:

  • 转到块顶部并用字母a标记.
  • 转到块的底部并用字母b标记

然后做

:'a,'b s!^!#!
Run Code Online (Sandbox Code Playgroud)


Har*_*rry 6

comm='''
Junk, or working code 
that I need to comment.
'''
Run Code Online (Sandbox Code Playgroud)

您可以comm选择一个较短,易于触摸的变量替换,并且知道程序中不会(也不会发生)。例如:xxxoonullnil


Tho*_*sen 6

在使用 Visual Studio 的Python 工具的 Visual Studio 中,块可以用Ctrl+ KCtrl+C注释掉,并用Ctrl+ KCtrl+取消注释U


小智 5

我在 Windows 机器上使用Notepad++,选择你的代码,输入CTRL-K. 要取消注释您选择的代码并按Ctrl+ Shift+ K

顺便说一句,Notepad++ 可以很好地用作 Python 编辑器。具有自动完成、代码折叠、语法高亮等功能。而且它就像言论和啤酒一样免费!


jac*_*ury 5

是的,有(取决于你的编辑).在PyDev中(以及在带有PyDev的Aptana Studio中):

  • Ctrl+ 4- 评论选定的块

  • Ctrl+ 5- 取消注释选定的块


aru*_*run 5

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