Python NOOP 替换

6

经常需要临时注释一些代码,但有些情况下注释一行代码会导致语法错误,如下所示:

if state == False:
    print "Here I'm not good do stuff"
else:
#    print "I am good here but stuff might be needed to implement"

有没有什么东西可以作为NOOP,以保持这个语法的正确性?
3个回答

14

您要查找的操作是 pass。因此,在您的示例中,它应该是这样的:

if state == False:
    print "Here I'm not good do stuff"
else:
    pass
#    print "I am good here but stuff might be needed to implement"
您可以在这里阅读更多相关信息: http://docs.python.org/py3k/reference/simple_stmts.html#pass

8
在Python 3中,...可以很好地替代pass
class X:
    ...

def x():
    ...

if x:
    ...

我理解它的含义是“待完成”,而pass则表示“此页面有意留空”。

实际上,它只是一个字面量,就像NoneTrueFalse一样,但是它们都可以被优化掉。


4
我发现如果你把代码放在三引号注释'''注释'''中,它就像一个NOOP,因此你可以放一个三引号注释,以防代码被删除或使用#注释掉。
针对上面的情况:
if state == False:
    '''this comment act as NOP'''
    print "Here I'm not good do stuff"
else:
    '''this comment act as NOP and also leaves the 
    else branch visible for future implementation say a report or something'''
#    print "I am good here but stuff might be needed to implement" 

7
你应该使用pass(http://docs.python.org/reference/simple_stmts.html#pass)作为空操作。这样做的优点是代码短小而且没有额外的含义(字符串有可能被程序误解释)。 - Nobody moving away from SE
@Nobody 你有任何不希望出现的行为示例以供避免吗? - Eduard Florinescu
裸字符串应该没问题,但是你必须小心,不要在这些字符串中编写文档测试(如果不需要的话)。除此之外,还有不必要解析冗长字符串的情况,这些字符串将被计算并返回,然后被忽略(也许这将被优化掉)。我想不出更多的边角情况,但无论如何,“pass”都是最好的选择,因为它是为这种情况而设计的。如果您以这种方式使用注释,则会违反注释的规则:它们可以被删除而不改变程序的语义。 - Nobody moving away from SE
2
同意。 你也可以执行 1+1,或者说 - 关键是 pass 已经意味着“什么也不做”,以便其他人阅读代码时能够理解它什么也不做。 - Katriel
2
多行字符串可以用作注释,并且不生成任何代码。此外,只要这些字符串未被放置在 defclass 之后或模块的开头,因此不是文档字符串,doctest 就会忽略这些字符串。 - unutbu

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