python 三引号可以包含注释,关于python:注释掉嵌套的三引号

在python中注释掉多行,我们使用三重引号

def x():

"""This code will

add 1 and 1"""

a=1+1

但是,如果我必须注释掉已经包含许多其他注释掉代码块(三重引用注释)的代码块,该怎么办。 例如,如果我想完全注释掉此功能。

"""

def x():

"""This code will

add 1 and 1"""

a=1+1

"""

这行不通。 我如何注释掉这样的代码块。

如果内部使用双引号,则可以在外部使用单引号。"""comment"""。 这可行。

In python to comment-out multiple lines we use triple commas

这只是一种实现方式,从技术上讲,您使用的是字符串文字,而不是注释。而且,尽管已经相当成熟,但是这种写注释的方式具有您观察到的缺点:您无法注释掉嵌套的块。1

Python没有嵌套的多行注释,就这么简单。如果要注释掉允许嵌套注释的多行,唯一安全的选择是注释掉每行。

大多数编辑器都有一些命令,可以使注释或多行注释变得容易。

1对于单层嵌套,您实际上可以使用'''"""nested"""''',或者反过来使用。但我不推荐它。

但是,OP实例中的"注释"都是文档字符串,这可能会使来自运行时可以使用内联文档的环境中的某人感到困惑。

鉴于Guido本人已认可该技术,因此"滥用"似乎有点过头了:" Python技巧:您可以将多行字符串用作多行注释。除非用作文档字符串,否则它们不会生成任何代码! :-)"

即使在Emacs或VIM中,使用编辑器通过在行的开头加上#号来完成此操作也是一种不好的方法。为此,三引号方法是事实上的标准,OP的问题是合法的。

@EMS我从未怀疑这个问题的合法性。但是这种引用技术当然不是"事实上的标准"。它似乎已被某些开发人员使用(如先前的评论者所述,Guido包括在内),但这并没有使其成为标准。此外,问题在于嵌套的多行注释。我挑战你在我对这个问题的回答中发现错误。您断言使用文本编辑器注释掉多行很不好,这很荒谬。

好吧,我们不同意。 #s的批量粘贴列太麻烦了,即使在Emacs中使用矩形粘贴也是如此。当您将它们注释掉时,这也使很大一部分代码成为极大的麻烦。有很多实际的原因为什么三重引用一个块更有效,这就是为什么这么多Python程序员使用该技术的原因。我完全不同意它的"荒谬"。当我遇到其他批处理粘贴了#的代码时,我只是大开眼界。如果有人在诸如gedit之类的基本编辑器中获得该代码,那就更糟了,这会使列选择变得困难。

@EMS这并不荒谬,我没有那么说。你认为另一种方法不好是荒谬的。实际上,另一种方法是最新技术,现状以及许多文本编辑器和IDE支持的一种真实方法。特别是gedit有一个插件可以做到这一点。随意滚动您的视线,但不要将您的偏见推断给其他程序员(他们对这种评论方法完全满意)。

我知道你的意思。我是说您的主张"您的断言,认为使用文本编辑器注释多行简直太荒谬了",这是错误的。我的断言并不荒谬,可以通过广泛使用三引号方法以及不可行批号方法得到证明。您仅需要一个完整的插件即可在基本编辑器中处理该事实,这一事实很明显地证明了这是一个坏主意。

@EMS您的整个论点都不令人信服。实际上,那里没有争论。您只是声称必须在一个特定的编辑器中使用插件才是一个坏主意。那不是争论。那是毫无根据的主张。而且这种报价方法是普遍存在的,而且我肯定比三重报价方法更广泛(这是由于跨语言支持这一事实)。所以,是的,我坚持认为您的要求是荒谬的。

使用批处理#方法是不切实际的,尤其是如果该方法无法在大多数普通编辑器中方便地移植(例如,您需要在gedit中使用它的插件)。它比三重引号方法更冗长的键入内容,并导致令人眼花code乱的代码。这些是不受欢迎的理由。与三重引用方法的流行(和认可)相结合,三重引用方法显然更受基础技术的青睐。这些都是有力的理由。您可以不同意它们,但是坦率地说,我甚至还没有说服力的主张是荒谬的。你不合理。我不干了。

三重引号是在python中执行多行注释和小写的标准方法。 -1表示不/表示滥用。

@Julius您读过脚注了吗?但是,是的,我应该改变回复的语气,以反映这种对语言的混蛋已成为一种习语。

我在简短的hack&slay情况下经常做的事情如下。它并不是真正的评论,并且不能涵盖所有情况(因为您需要屏蔽),但这可能会有所帮助:

if 0:  # disabled because *some convincing reason*

def x():

"""This code will

add 1 and 1"""

a=1+1

或者,如果您不能或不喜欢在典型的缩进级别之间引入缩进级别:

# disabled because *some convincing reason*

if 0:  # def x():

"""This code will

add 1 and 1"""

a=1+1

您应该在每行的开头使用#进行注释。如果您使用的是eclipse + pydev,这非常容易。

只需选择要注释的代码块,然后按Ctrl + \。取消注释也是如此。

我相信其他编辑器中也有这么简单的方法。

我正在学习构建搜索引擎的Udacity python编程课程。他们使用三引号将网页的源代码作为字符串括在变量"页面"中,以搜索所有链接。

page ='''page page source code'''用page.find()搜索

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值