What is the use case for “pass” in Python?
本问题已经有最佳答案,请猛点这里访问。
根据对这个问题的回答,python中的
鉴于此,我不理解它的用途。例如,我在尝试调试其他人编写的脚本时查看以下代码块:
1 2 3 4 5 6 7 8 9 10 11 | def dcCount(server): ssh_cmd='ssh [email protected]%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) |
在这里有没有任何目的?这是否以任何方式改变了函数的运行方式?似乎这个
1 2 3 | if result == 0: queryResult = output.communicate()[0].strip() takeData(server,"DC", queryResult) |
…还是我错过了什么?而且,如果我没有遗漏什么,为什么我要使用
在你的例子中,它确实是无用的。
如果您希望块是空的,这有时是有用的,而这是Python不允许的。例如,在定义自己的异常子类时:
1 2 | class MyException(Exception): pass |
或者,您可能希望循环某个迭代器以获取其副作用,但不处理结果:
1 2 | for _ in iterator: pass |
但大多数时候,你不需要它。
记住,如果你可以添加一些不是评论的东西,你可能不需要通行证。例如,空函数可以采用docstring,它将作为一个块工作:
1 2 | def nop(): """This function does nothing, intentionally.""" |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | >>> 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 ... >>> |
空类
空函数
或者,就像另一个人说的那样-像"except"这样的空条款
没有必要使用
1 2 | class dummy: pass |