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

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


当前回答

在Python中,pass语句用于在语法上需要语句,但不希望执行任何命令或代码的情况。

pass语句是一个空操作;执行时什么也不发生。pass在你的代码最终要去的地方也很有用,但还没有写出来(例如,在存根中):

例子:

#!/usr/bin/python

for letter in 'Python':
   if letter == 'h':
      pass
      print 'This is pass block'
   print 'Current Letter :', letter

print "Good bye!"

这将产生以下结果:

Current Letter : P
Current Letter : y
Current Letter : t
This is pass block
Current Letter : h
Current Letter : o
Current Letter : n
Good bye!

如果字母的值是'h',上面的代码不会执行任何语句或代码。当您创建了一个代码块时,pass语句很有用,但不再需要它。

然后,您可以删除块中的语句,但让块保留pass语句,这样它就不会干扰代码的其他部分。

其他回答

Pass只是空的表示代码。

例如,pass用于创建一个空类或函数,如下所示:

class Test:
    pass

def test():
    pass

但是,如果一个类或函数真的没有任何东西,甚至通过如下所示:

class Test:
    # pass

def test():
    # psss

出现如下错误:

SyntaxError:解析时意外的EOF

正如我之前所说,pass只是空的指示代码,所以如果在pass之后有一些代码,代码的工作方式如下所示:

class Test:
    pass
    x = "Hello World"

def test():
    pass
    return "Hello World"

print(Test.x) # Hello World
print(test()) # Hello World

你可以说pass意味着一个NOP(无操作)操作。看完这个例子,你就会清楚了:

C程序

#include<stdio.h>

void main()
{
    int age = 12;
  
    if( age < 18 )
    {
         printf("You are not adult, so you can't do that task ");
    }
    else if( age >= 18 && age < 60)
    {
        // I will add more code later inside it 
    }
    else
    {
         printf("You are too old to do anything , sorry ");
    }
}

现在你要怎么用Python写这个:

age = 12

if age < 18:

    print "You are not adult, so you can't do that task"

elif age >= 18 and age < 60:

else:

    print "You are too old to do anything , sorry "

但是您的代码会给出一个错误,因为在elif之后需要一个缩进的块。下面是pass关键字的作用。

age = 12

if age < 18:

    print "You are not adult, so you can't do that task"

elif age >= 18 and age < 60:
    
    pass

else:

    print "You are too old to do anything , sorry "

现在我想你们都清楚了。

如果你想导入一个模块,如果它存在,并且忽略导入它,如果该模块不存在,你可以使用下面的代码:

try:
    import a_module
except ImportError:
    pass
# The rest of your code

如果您避免编写pass语句并继续编写其余代码,则会引发IndentationError,因为打开except块后的行没有缩进。

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