我在学习Python的过程中,我已经到了关于pass语句的部分。我正在使用的指南将其定义为通常用作占位符的空语句。

但我还是不太明白这是什么意思。pass语句将被使用的简单/基本情况是什么?为什么需要它?


当前回答

假设您正在设计一个新类,其中包含一些您还不想实现的方法。

class MyClass(object):
    def meth_a(self):
        pass

    def meth_b(self):
        print "I'm meth_b"

如果您省略了传递,代码将无法运行。

然后你会得到一个:

IndentationError: expected an indented block

总之,pass语句不做任何特殊的事情,但它可以充当占位符,如下所示。

其他回答

pass用于避免Python中的缩进错误。

如果我们以C、c++和Java等语言为例,它们有这样的大括号:

 if(i==0)
 {}
 else
 {//some code}

但是在Python中,我们使用缩进代替大括号,所以为了避免这样的错误,我们使用pass。

记得你在做测验的时候

if(dont_know_the_answer)
    pass

示例程序,

for letter in 'geeksforgeeks':
    pass
print 'Last letter: ', letter

除了用作未实现函数的占位符外,pass还可以用于填充if-else语句(“显式比隐式好”)。

def some_silly_transform(n):
    # Even numbers should be divided by 2
    if n % 2 == 0:
        n /= 2
        flag = True
    # Negative odd numbers should return their absolute value
    elif n < 0:
        n = -n
        flag = True
    # Otherwise, number should remain unchanged
    else:
        pass

当然,在这种情况下,可能会使用return而不是赋值,但在需要突变的情况下,这种方法效果最好。

在这里使用pass特别有用,可以警告未来的维护者(包括您自己!)不要将多余的步骤放在条件语句之外。在上面的例子中,在特别提到的两种情况中设置了flag,但在其他情况中没有设置。如果不使用pass,未来的程序员可能会将flag = True移到条件之外,从而在所有情况下设置flag。


另一种情况是经常出现在文件底部的样板函数:

if __name__ == "__main__":
    pass

在某些文件中,最好将其与pass一起保留,以便稍后更容易地进行编辑,并明确表示当文件单独运行时不期望发生任何事情。


最后,正如在其他回答中提到的,当异常被捕获时,什么都不做是很有用的:

try:
    n[i] = 0
except IndexError:
    pass

在Python中,pass基本上什么都不做,但与注释不同的是,它不会被解释器忽略。所以你可以在很多地方利用它,把它变成占位符:

1:可以在课堂上使用

class TestClass:
    pass

2:可以在循环语句和条件语句中使用:

if (something == true):  # used in conditional statement
    pass

while (some condition is true):  # user is not sure about the body of the loop
    pass

3:可用于功能:

def testFunction(args): # The programmer wants to implement the body of the function later
    pass

当程序员暂时不想给出实现,但仍然想创建某个类/函数/条件语句以供以后使用时,通常使用Pass。由于Python解释器不允许出现空白或未实现的类、函数或条件语句,因此会给出一个错误:

IndentationError:期望一个缩进的块

Pass可以在这种情况下使用。

老实说,我认为Python官方文档描述得很好,并提供了一些示例:

The pass statement does nothing. It can be used when a statement is required syntactically but the program requires no action. For example: >>> while True: ... pass # Busy-wait for keyboard interrupt (Ctrl+C) ... This is commonly used for creating minimal classes: >>> class MyEmptyClass: ... pass ... Another place pass can be used is as a place-holder for a function or conditional body when you are working on new code, allowing you to keep thinking at a more abstract level. The pass is silently ignored: >>> def initlog(*args): ... pass # Remember to implement this! ...

Pass is usually helpful when you are writing code to design a game or something of that type , now as you proceed with the code , you would realize that , there are some functions you don't want to move ahead and want to leave it untouched and move further on with the code and then revisit the function later , but as you do so , the compiler would obviously thrown an error saying it isn't either recognized and all sorts of other things!! In this condition you use pass so that the compiler would simply neglect the function and move further on with the code !!

例如:

if __name__ = "__main__":
pass
print("Hello World!")

在这里,编译器将忽略if name部分,并按照指示打印Hello World !!

谢谢!