Python中"pass"的用例是什么?

ast*_*eri 1 python keyword

根据这个问题的答案pass,Python中的关键字绝对没有任何作用.它只是表明"这里什么都不做".

鉴于此,我不明白它的使用.例如,我正在尝试调试别人写的脚本时看下面的代码块:

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)
Run Code Online (Sandbox Code Playgroud)

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

if result == 0:
    queryResult = output.communicate()[0].strip()
takeData(server, "DC", queryResult)
Run Code Online (Sandbox Code Playgroud)

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

Rem*_*ich 10

在你的例子中确实没用.

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

class MyException(Exception):
    pass
Run Code Online (Sandbox Code Playgroud)

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

for _ in iterator:
    pass
Run Code Online (Sandbox Code Playgroud)

但大多数时候,你不需要它.

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

def nop():
    """This function does nothing, intentionally."""
Run Code Online (Sandbox Code Playgroud)

  • +1 我也认为扩展异常是更有用的用法(调试和延迟实现除外)。 (2认同)