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

但我还是不太明白这是什么意思。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指忽略…就是这么简单。如果给定的条件为真,并且下一个语句是通过的,它将忽略该值或迭代并继续执行下一行。

例子:

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

输出:输出1-100之间的所有奇数

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

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语句什么也不做。当语法上需要语句,但程序不需要操作时,可以使用它。

除了“我不想要任何东西到这里”的“主要”用途之外,我刚刚发现了一个,假设gen是一个迭代器:

i = 0
obj = None

for i, obj in enumerate(gen):
    pass

这将在一次传递中获得gen生成的最后一个对象和gen的长度。(有点类似于C语言中以分号结尾的while循环,仔细想想吧。)