Python中“pass”的用例是什么?

时间:2014-03-24 14:18:51

标签: python keyword

根据this question的答案,Python中的pass关键字绝对没有任何作用。它只是表明“这里什么都不做。”

鉴于此,我不明白它的使用。例如,在尝试调试其他人写的脚本时,我正在查看以下代码块:

def dcCount(server):
    ssh_cmd='ssh user@subserver.st%s' % (server)
    cmd='%s "%s"' % (ssh_cmd, sub_cmd)
    output=Popen (cmd, shell=True, stdout=PIPE)
    result=output.wait()
    queryResult=""
    if result == 0:
        queryResult = output.communicate()[0].strip()
    else:
        pass
    takeData(server, "DC", queryResult)

else: pass这里有什么目的吗?这会以任何方式改变函数的运行方式吗?似乎这个if / else块可以像下面一样重写,绝对没有变化:

if result == 0:
    queryResult = output.communicate()[0].strip()
takeData(server, "DC", queryResult)

......或者我错过了什么?而且,如果我没有遗漏某些内容,为什么我会想要使用pass关键字?

4 个答案:

答案 0 :(得分:8)

在你的例子中确实没用。

如果您希望块为空,有时会有所帮助,这是Python不允许的。例如,在定义自己的异常子类时:

class MyException(Exception):
    pass

或者你可能想要为它的副作用循环一些迭代器,但对结果不做任何事情:

for _ in iterator:
    pass

但大部分时间,你都不需要它。

请记住,如果您可以添加其他不是评论的内容,则可能不需要通过。例如,一个空函数可以使用docstring,它将作为一个块:

def nop():
    """This function does nothing, intentionally."""

答案 1 :(得分:4)

pass用于什么都不做,但在语法上要求有东西。当我想简单地跳过有错误的行时,我最常使用try...except块,如下所示

>>> try:
...    1/0
...
  File "<stdin>", line 3

    ^
SyntaxError: invalid syntax
>>> try:
...    1/0
... except:
...
  File "<stdin>", line 4

    ^
IndentationError: expected an indented block
>>> try:
...    1/0
... except:
...    pass
...
>>>

答案 2 :(得分:0)

使用您显示的pass没有任何意义,可以将其与else一起删除。尽管如此,我偶尔发现pass有用,例如在评论条件的主体时,或者在实现没有成员的类时:

class dummy:
    pass

答案 3 :(得分:0)

空类

清空功能

或者像其他人说的那样 - 除了&#34;

之外的空条款如#34;