如何使用“pass”语句?

432

我正在学习Python,目前已经学到了有关 pass 语句的部分。我的教程定义它是一个空语句,通常被用作占位符。

然而,我仍然不完全理解这意味着什么。在什么简单/基本的情况下需要使用 pass 语句,为什么需要使用它呢?


4
我从未在现实生活中需要过这样做,但是我可以想象在子类中覆盖一个方法并将其设为空操作时,可能会用到 pass 关键字。 - kojiro
3
@kojiro 例如,在进行编程时,有时候会用到https://en.wikipedia.org/wiki/Skeleton_(computer_programming)。 - Franck Dernoncourt
1
处理异常时非常方便。有时,异常意味着正常条件只需要不同类型的处理。在这种情况下,在except块中使用pass非常方便。 - Mad Physicist
18个回答

0

Pass通常在编写设计游戏或类似项目的代码时非常有用。随着代码的进展,您会意识到有一些函数不想继续执行,希望将其保持不变并继续进行代码编写,然后稍后再回来处理该函数。但是,这样做时,编译器显然会抛出错误,说它无法识别等各种问题!在这种情况下,您可以使用pass,以便编译器简单地忽略该函数并继续进行代码编写!

例如 -

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

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

谢谢!


0

首先,如果你想写一个像这样的代码块:

if statement:
    pass
for i in range(abc):
    pass
def func():
    pass

pass可以作为一个占位符。

其次,它可以让你与IDE“交流”: 当你想让你的IDE像这样减少缩进时:
如果你的程序在这里编写:

class abc(parent):
    def __init__(self, params):
        self.params=params
        if d:
            return
        else:
            return
        # cursor in there

现在你的缩进计数是2,但你想让它在下一行变成1。 你可以输入pass,然后你的程序就会变成这样:

class abc(parent):
    def __init__(self, params):
        self.params=params
        if d:
            return
        else:
            return
        pass# cursor in there

并返回。它会让你感到高兴:

class abc(parent):
    def __init__(self, params):
        self.params=params
        if d:
            return
        else:
            return
        pass
    # cursor in there

现在缩进计数为1。


0
除了“主要”用于“我不希望在这里发生任何事情”的用法外,我还发现了另一个用法,假设gen是一个Iterator:
i = 0
obj = None

for i, obj in enumerate(gen):
    pass

这个操作可以一次性获取最后一个从genyield出来的对象以及gen的长度。(有点类似于C语言中以分号结束的while循环,想想看。)


0

pass只是表示空白的指示代码。

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

class Test:
    pass

def test():
    pass

但是,如果一个类或函数真的没有任何东西,甚至不需要像下面展示的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

0

正如书中所说,我只将其用作临时占位符,即,

# code that does something to to a variable, var
if var == 2000:
    pass
else:
    var += 1

然后稍后填写var == 2000的情况。


3
你在谈论哪本书? - user334856
抱歉...指的是原帖中提到的指南。 - Cameron Sparr

-1
在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!

如果letter的值为'h',则上述代码不会执行任何语句或代码。当您创建了一个代码块,但它不再需要时,pass语句非常有用。

然后,您可以删除块内的语句,但让该块保留一个pass语句,以便它不会干扰代码的其他部分。


-1

Pass指的是忽略...就像它所描述的那样简单。如果给定的条件为真并且下一条语句是pass,它将忽略该值或迭代并继续执行下一行。

例如:

for i in range (1, 100):
    if i%2 == 0:
        pass
    else:
        print(i)

输出:打印从1到100的所有奇数

这是因为偶数的模数等于零,因此它会忽略该数字并继续处理下一个数字。由于奇数的模数不等于零,因此循环的else部分被执行并打印出来。


1
我遇到了一个“SyntaxError”。此外,这不是使用pass的好方法,因为你可以简单地执行for i in range(1,100):print(i)if i%2else"" - MilkyWay90
是的,正如你所说,这并不是一个好的实践方法,但我只是想给出一个易于理解的例子。 - K Rinish
我知道为什么会出现语法错误,那是因为我的代码被错误地编辑了。 - K Rinish
抱歉,我会修复它的。 - K Rinish

-2

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

如果我们看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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接